2011-07-21 26 views
0

私は、私のWPFアプリケーションのThreadPoolでいくつかのスレッドを実行しています。これらのスレッドがすべて終了したかどうかを調べるために、おそらく別のスレッドから監視する必要があります。 これをどのように達成できるでしょうか。別のスレッドからC#スレッドを監視する方法

簡単にするために、私の使用シナリオは次のとおりです。

  1. はThreadPoolの中にボタンを
  2. スタート複数のスレッドをクリックします。
  3. ThreadPoolで監視する別のスレッドを開始してください。
  4. WPF AppのUIをロックします。
  5. 手順3のスレッドが(2)で開始したスレッドが終了したことを示すグローバル値を設定すると、ロックが解除されます。
+0

[WaitHandle.WaitAll 64ハンドル制限の回避策?](http://stackoverflow.com/questions/2702545/workaround-for-the-waithandle-waitall-64-handle-limit) –

+0

にもかかわらず非常に難しいタイトルですが、これは同じ問題に関するもので、解決策があります。 –

答えて

0

手元の問題は実際にはローカライズされています。私は最初の欠陥のある設計に適合させるためにAd Hocのアプローチを採用しなければなりませんでした。

私のアプローチは、スレッドが開始されるたびにカウンタを増やし、そのスレッドが終了するときにカウンタの値を減らすことでした。カウンタの値を監視するために、単にカウンタの値を監視するために別のスレッドを開始しました。多分エレガントなアプローチではないかもしれませんが、うまくいくようです。

1

スレッドプール内のすべてのスレッドを配列に配置します。プールスレッドが終了するのを待つときは、WaitHandle.WaitAllを使用して、スレッドが完了するのを待ちます。

+0

@Henk Hoterman:スレッドを制御したいと思ったので、自分のスレッドプールを作成すると思っていました。組み込みのプールを使用している場合、アイデアの継ぎ目全体に欠陥があります。 –

関連する問題