複数のスレッドを実行する .NET Windows サービスがあります。開発者が新しいスレッドをいくつか追加しましたが、サービスが停止する前にスレッドを終了するコードを追加するのを忘れていました。サービスを停止すると、正常に停止したように見えますが、サービスが停止した後も exe プロセスが数秒間実行され続けます。この間に何が起きていて、スレッドはどうなっているのでしょうか?
質問する
1201 次
2 に答える
2
データベース接続を閉じたり、ネットワーク接続を切断したり、ドライバーを停止したりするなど、単にボタンのクリックやユーザーからのキーストロークにサービスを提供するよりも、サービスが「より実質的」と見なされることを行う傾向があるため、遅延があると思います。数秒かかるため、OS はクリーン シャットダウンにある程度の時間を与えます。ただし、最終的には OS がプロセスを終了し、実行中のスレッドを強制終了します。
.NET のスレッドは、フォアグラウンド スレッドまたはバックグラウンド スレッドとして分類できます。質問しているスレッドが、サービスの実行に「害」を及ぼすことなく突然終了できる場合は、それらをバックグラウンド スレッドとしてマークして、プロセスの終了を妨げないようにします。
于 2013-01-09T23:54:27.273 に答える
1
スレッドを終了せずに ServiceStop メッセージを正しく処理すると、他のスレッドは約 20 秒間実行され続け、OS はサービス プロセスを強制終了し、途中でスレッドを強制終了します。
一般的に、害はないようです。
于 2013-01-09T20:19:57.257 に答える