■26130 / ) |
Re[1]: C# Windowsサービス、スレッド、デストラクタについて |
□投稿者/ aetos(旧シャノン) (13回)-(2008/10/02(Thu) 14:28:42)
|
■No26129 (直江兼続 さん) に返信 > サービスをスタートさせるタイミングで5つのスレッドを起動させます。 > スレッド内では常に監視の処理を行っている状態のまま、 > サービスで停止を行う際、スレッド内に設けてあるデストラクタを起動させ、 > かつスレッド自体のインスタンスも破棄したいのですが、 > 何かうまいやり方はありますでしょうか?
スレッドを停止させるのなら、Client1 クラスの外部から isContinue を false にしてやればいいでしょう。 そのためには、isContinue は Client1 のメンバ変数にして、Service1 側で Client1 の配列を持っておく必要があるでしょう。
デストラクタは無理です。というか、C# にデストラクタというものはありません。 ~Client1 はファイナライザというもので、インスタンスがガベージコレクションによって回収されるときに呼ばれるものです。そのタイミングは制御できません。 クラスに対して何か後始末を行う必要があるのなら、IDisposable インターフェイスを実装して、その Dispose を呼んでやりましょう。 この辺は注意点とか書き始めると長〜くなるので割愛します。IDisposable で検索して調べてみてください。
|
|