WCFサービスによってサーバーと通信するSilverlight5アプリケーションがあります。
アプリケーションを使用するほとんどのユーザーは、ブラウザー内でアプリケーションを実行しており(ほとんどの場合、Internet Explorerが使用されますが、他のブラウザーも使用されます)、OOB(ブラウザー外)をインストールするユーザーもいます。
アプリケーションが起動すると、新しいバージョンをチェックし、必要に応じてアップグレードします。ここでは異常なことは何もありません。
時々、主に夕方と週末に、ソリューションのアップグレードを行います。これは、データベースの変更、WCFサービスの変更、Silverlightアプリケーション自体の変更、またはそれらすべての組み合わせである可能性があります。そして、ほとんどの場合、それはまったく問題ありません。
私の問題は、一部のユーザーがWebブラウザを閉じないことです。一部のユーザーは、Citrixウィンドウを介して作業し、Citrixウィンドウを閉じて作業後に帰宅するだけで、Silverlightアプリケーションを実行してWebブラウザーに存在させることができます。また、ブラウザをまったく閉じないものもあります。または、OOBを実行している場合は、アプリケーションを開いたままにします。それらが私の問題です。彼らは新しいアップデートをチェックすることは決してないからです。Silverlightアプリケーションはアップグレードされることはなく、アップグレードされる可能性のある新しいWCFサービスにも適合しません。
それはすべて、周りの世界が変わったために、Silverlightアプリケーションをクラッシュさせ、奇妙な例外をスローさせます。
誰かが同様の問題を抱えていて、実際に良い解決策を見つけましたか?
私が試してみました:
キーボードまたはマウスのクリックでリセットされ、アクティビティがない状態で一定時間後にアプリケーションを終了するタイマーを作成します。ただし、RDPまたはCitrixセッションから接続されている場合のように、このタイマーがカウントされない場合があるようです。
特定のコントロールまたはウィンドウが表示されるたびに更新を確認します。しかし、すべてのユーザーが同じものを使用するとは限らないため、これは良い解決策ではありません。また、ユーザーが何かを操作している場合は、ユーザーに割り込む可能性があります。
しかし、それらはすべて、少し厄介な回避策のように私には思えます。
何か提案はありますか?