0

SilverLight アプリの終了時に WCF サービスを呼び出して更新する必要があります。これはブラウザ外のアプリで、SL4 を使用しています。

SL の WCF は非同期でのみ動作するため、Application.Exit では実行できません。

OOB で利用できる MainWindow.Closing も試しましたが、これも機能しませんでした。

スレッド ロックを使用して Closing 関数を WCF Completed コールバックを待機させようとしましたが、ハングするだけでした。

何か案は?

シャハル

4

1 に答える 1

0

データを保存し、次回の起動時に送信します

終了時にサービスを呼び出すことは、使用しているプラ​​ットフォームに関係なくトリッキーな機能です。さまざまな理由 (タスク マネージャー、logff、シャットダウン、ブルースクリーンなど) により、呼び出しが行われる前にプロセスが終了する可能性があるため、これが発生することを実際に保証することはできません。シリーズの最後のレコードなどの重要なデータを書き込んでいる場合は、せいぜい部分的なデータセットを開き、最悪の場合は破損したデータにさらされることになります。

すべてのサーバー通信を一括トランザクションとして実行することをお勧めします。終了時に送信するデータがロギングまたはメトリックの目的である場合 (たとえば、アプリが実行された時間、「foo」が呼び出された回数)、より良いパターンは、データをディスクに継続的に保存してから計算を行うことです &次回アプリケーション起動時にデータを送信します。

于 2010-10-24T20:38:47.250 に答える