2016-05-19 10 views
-1

私のWindowsサービスでは、ソケット、スレッド、モニタ、セマフォなどの.Net管理オブジェクトが使用されています。これらのオブジェクトに関連する2つの質問があります。待機時にスレッドを解放するIDisposable.Disposeを実装します。

  1. 上記の管理対象オブジェクトを使用するクラスにIDisposable.Disposeを実装し、サービスが停止するのを助けるためにそれらを解放する必要がありますか。

  2. また、モニタで待機しているスレッドもあります。終了する前に停止/終了しない場合、ガベージコレクタはそれらをクリーンアップしますか?

答えて

0

IDisposablesを使用するときは、それらをどこかに配置する必要があります。フィールドでの参照の場合は、通常、そのクラスにIDisposableを実装してそこに配置する必要があります。スレッドは停止され(例えば、リセットイベントを使用して)、結合されるべきである。

+0

私はスレッドとモニタとして使用している場合は、私はそれらのクラスでディスポーザブルを使用する必要があります。サービスを停止する前にそれらをクリーンアップする。 – pats

関連する問題