私はプロセスを生成し、IsInitiating操作が呼び出されたときにこのプロセスに名前付きパイプを開くセッションフルなWCFサービスを持っています。 IsTerminating操作が呼び出されると、サービスはパイプを介してメッセージを送信して、シャットダウン可能なプロセスの終了をプロセスに通知します。残念ながら、クライアントが(IsTerminating操作を呼び出すことによって)正常に切断されない場合、メッセージはパイプに送られず、他のプロセスは決して終了しません。突然のWCFでのリソースクリーンアップセッションのサービス切断
サービスがIDisposableを実装しようとしましたが(サーバーでセッションがタイムアウトしたときにDisposeメソッドが呼び出されることを期待しています)、これは機能していないようです。
クライアントが切断されたとき(たとえ私がinactivityTimeoutを待たなければならない場合でも)サーバー側でいくつかのコードを呼び出すことができる方法はありますか?
IDisposableは動作しません - 2人が動作していると主張しました... – Schneider
私はカスタムIInstanceProviderを使用していました。その場合は、ReleaseInstance呼び出し中に手動でDisposeを呼び出す必要があります。ファイナライズは起こりません。インスタンスはリサイクルされているので、必ずしもGC'dとは限りません。 – Schneider