1

の複製

プールされたスレッドが完了するまで待ちます。

スレッドプールに与えられるのを待っている X 個の関数があり、スレッドプールのスレッドの最大数は 5 です。すべての X 関数が実行されるまでメインスレッドを待機させるソリューションを見つける必要があります。

コードは次のようになります。

              for(int i=0;i<Rulecnt;i++)
              {
                  int copy = count;
                  ds[copy] = dba.geData(ru[copy]);
                  dcont[copy] = new DataContainer(ru[copy], ds[copy], copy);
                  ThreadPool.QueueUserWorkItem(new WaitCallback(runRule[copy].performTask),dcont[count]);
              }

すべての関数が実行されるまでメインスレッドを待機させたい。

簡単な解決策は、ManualResetEvents の Rulecnt no を作成してスレッドに渡し、すべてのシグナルが到着するのを待つことです。

しかし、いつでも実行できるスレッドの最大数は 5 であるため、ManualResetEvents を 5 つだけ使用できますか?,可能であれば、どのようにすればよいでしょうか?

または解決策があれば説明してください。

4

0 に答える 0