問題タブ [isbackground]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - アプリケーションの終了時に IsBackground in Threads に安全に依存できますか?
GUI でいくつかのバックグラウンド スレッドを実行しています。現在、私は個人的な Thread キャンセル コードを実装していますが、スレッドには IsBackground プロパティがあり、MSDN によると、スレッド自体がキャンセルされます。
厄介な Thread.Abort() に行くことはわかっていますが、このバックグラウンドスレッドでは、適切な状態を維持する必要があるか、適切なクリーンアップが必要なことは何もありません。
ユーザーがバックグラウンド スレッドの途中でアプリケーションを閉じた場合のクラッシュを回避しようとしています。マルチスレッドのシナリオはテストが非常に難しいため、この件についてご意見をお聞かせください。
基本的に、自分のコードをロールバックする代わりに、IsBackground = True を設定して、残りを忘れるべきでしょうか?
wcf - スレッドを持つ Windows サービスのシャットダウン
各コールバックで複数のスレッドを生成する System.Threading.Timer を使用して、.NET 3.5 (c#) で記述された Windows サービスがあります。これらは単なる通常のスレッド (スレッド プールなし) であり、マネージ コードのみを実行するため、各スレッドでIsBackground = trueを設定しました。
ユーザーがサービスを停止すると、すべてのスレッドはどうなりますか? 彼らは優雅に死にますか?join または abort を呼び出してスレッドを管理するコードはありません。IsBackground = trueで、ユーザーがサービスを停止したときにスレッドが破棄されて停止すると仮定するのは正しいですか? 誰かが Service Manager GUI を介して Windows サービスを停止すると、正確にはどうなりますか? OnStop イベントを発生させた後、プロセスを強制終了しますか?
ユーザーがサービスを停止する前にスレッドがないことを確認できる別のメカニズムを構築したため、これは実際には受け入れられます。これは、Windows サービス内で実行される ServiceHost から公開される 2 つの WCF メソッドを介して行われます。新しいスレッドの生成を停止する 1 つの方法と、実行中のスレッドがいくつ残っているかを照会する別の方法があります。
これらの手順をスキップしてサービスを停止するとどうなるか興味があります... IsBackground がこれを達成するのに役立つようです:
c# - アプリケーションの終了時にアプリケーションによってバックグラウンド スレッドが強制終了されたことを検出できますか?
IsBackground プロパティを true に設定した C# のスレッドを使用しています。アプリケーションが閉じるまで、スレッドはループ内でいくつかのコードを実行しています。アプリケーションが閉じられると、スレッドも実行を停止します (IsBackground = true を設定したため)。
アプリケーションはどのようにスレッドを強制終了しますか? ThreadAbortException が出ないので、abort を呼んでやっていないようです。舞台裏で起こっていますか?ループの最終ブロックでロールバックを行いたいと思います。
自分でスレッドで中止を呼び出すことができることはわかっていますが、アプリケーションがバックグラウンド スレッドを閉じる方法と、スレッド内から応答できるかどうかを知りたいです。Application.ApplicationExit イベントをサブスクライブできることはわかっていますが、サービスと winform の両方でこのコードを実行していて、ループ内で例外をキャッチしたいので、finally ステートメントでロールバックできます。
c# - AdditionalThread.IsBackground = falseの場合、追加のスレッドから、メインスレッドが完了したかどうかを確認する方法
メインと追加の 2 つのスレッドがあります。追加スレッドは無限ループで動作し、メイン スレッドまたはアプリケーションの終了後に停止する必要があります。停止する必要があることをAdditionalThreadに伝える最良の方法を教えてください。メインスレッドで「リターン」後に自動的に生成されるイベントを使用するか、メインスレッド.IsAlive()またはAppDomain.ProcessExitを使用する必要があるかどうかを何らかの方法で確認する必要がありますか?
ありがとうございました!