私は .NET Web サービス入門コースを受講していますが、現在学んでいることの 1 つは IDisposable インターフェイスです。比較的単純な例として、オペレーションを使用してサービス (サーバー/クライアント) を作成しましたMyMethod()
。このメソッドは、呼び出されたときに trace ステートメントを出力するだけです。また、サーバーに IDisposable を実装Dispose()
し、サーバー実装バージョンで単純な WriteLine トレースを使用してメソッドを実装しました。
私のクライアントでは、ChannelFactory を使用して 2 つのプロキシを作成します。proxy1 でMyMethod()
操作を 3 回呼び出してから、proxy1 を破棄するための数行のコードを記述します。
var castedProxy = (IDisposable)proxy1;
castedProxy.Dispose();
proxy2 で、もう一度MyMethod()
操作を 3 回呼び出します。ただし、今回はキャストも呼び出しもしませんDispose()
。サーバー/クライアントを実行すると、同じトレースが 6 回表示されます。
サーバーのトレース + CurrentThread ID
MyMethod() のトレース + CurrentThread ID
Dispose() のトレース + CurrentThread ID
私の質問は次のとおりDispose()
です。最初の 3 つのトレースのみを使用しているにもかかわらず、トレースの一部が毎回発生するのはなぜですか? 私の推測では、BasicHttpBinding を使用する場合、セッション管理自体がないため、古いリソースがまだ存在し、古い Dispose() 呼び出しを出力しているという事実と関係があると思います。
あなたが提供できる洞察を前もって感謝します!:)