私はIntro to .NET Web Servicesコースを受講しています。私たちが現在学んでいることの1つはIDisposableインターフェイスです。比較的単純な例として、MyMethod()
操作でサービス(サーバー/クライアント)を作成しました。このメソッドは、呼び出されたときにtraceステートメントを単に出力します。私はまた、サーバでIDisposableを実装し、Dispose()
メソッドを実装しました。これは、サーバ実装バージョンの単純なWriteLineトレースです。私のサービスのDispose()メソッドは、呼び出さなくてもなぜ呼び出されますか? (BasicHttpBindingを使用)
私のクライアントでは、ChannelFactoryを使用して2つのプロキシを作成します。 PROXY2で
var castedProxy = (IDisposable)proxy1;
castedProxy.Dispose();
、私は再びこの時間を除いて、私はDispose()
をキャストし、起動していない、MyMethod()
操作を3回呼び出します。PROXY1に私はPROXY1を配置するための数行のコードを持って、その後、MyMethod()
操作を3回呼び出します。私は、サーバー/クライアントを実行すると、私が手に同じトレース6回:
サーバーのトレース+ CurrentThread ID
MyMethodは()のトレース+ CurrentThread ID
のDispose()のトレース+ CurrentThread ID
私の質問は次のとおりです。最初の3つのトレースだけを使用していても、いつもトレースのDispose()
部分が毎回発生するのはなぜですか?私の推測では、BasicHttpBindingを使用するときにセッション管理自体がないため、古いリソースがまだ残っていて、古いDispose()呼び出しを印刷するという事実と関係していると思います。
事前にご提供いただいている洞察をお寄せいただきありがとうございます。 :)
あなたの迅速で洞察力のある応答に感謝します!間違いなく私の質問に100%答えました。 :D –
あなたは大歓迎です:) –