ネジ付きメソッドが完了したかどうかを検出するためにとにかく
-
09-09-2019 - |
質問
私は基本的にalbahari.comプロデューサー/コンシューマ・キューでキューを、持っています キューからキューアイテムを取る本を、スレッド、キューオフアクションの実行ブロックであり、その後、キュー項目内のアクションリストを実行するためのメソッドを呼び出しています。
私はヌルactionblockをキューへことにより、容易に十分なキューを殺し、スピンをすることによって、メインスレッドをブロックすることができます/のThread.sleep()キューのカウントが0になるまでに待機し、そしてすべてのスレッドはしばらく通って落下! = NULLループ、それによって完成するが、最後のアクションリストを実行する方法は、まだ最後のスレッドを実行することができます。
質問は、その方法はまだ多分メソッドの先頭でセマフォをカウントアップし、最後にそれをカウントダウンするインターロックとセマフォやカウンターを使用してのように、それを実行中のスレッドを持っているかどうかを検出する彼らとにかくです。だから、それがゼロに達した場合、それらを私は、そのスレッドではない知っています。
これは実装されて処分を呼び出す前に、それを閉鎖するために、インタフェースのメソッドを破壊します。
解決
あなたはこのようにスレッドを起動した場合:
System.Threading.Thread mythread = new System.Threading.Thread();
mythread.Start();
あなたは確認することができます:
mythread.IsAlive()
の任意の時点でそのステータスを決定する。
他のヒント
完了したイベントを持っているのBackgroundWorkerを使用してください。
メソッドにPostSharp属性を使用します。
所属していません StackOverflow