3
我有一個運行槽信息的工作對象列表。檢查信號量的每個線程是否已完成
下面是代碼的示例:
List<Job> jobList = jobQueue.GetJobsWithStatus(status);
if (jobList.Count > 0)
{
foreach (Job job in jobList)
{
semaphore.WaitOne();
// Only N threads can get here at once
job.semaphore = semaphore;
ThreadStart threadStart = new ThreadStart(job.Process);
Thread workerThread = new Thread(threadStart);
workerThread.Start();
}
//check that every thread has completed before continuing
}
每個作業對象具有狀態構件variableA的(0:新,1:INPROGRESS,2:已完成,3:completedWithErrors)。
我想知道在繼續執行腳本之前,檢查列表中的每個作業都已完成的最佳方法是什麼?
注:我有一個線程池,併爲WaitAll嘗試過,但它doenst讓我有線程的數量有限(無二次效應)像一個信號呢,我也打的大小的限制ManualResetEvent數組,因爲它是一個Windows窗體。