Bar*_*ney 0 .net c# multithreading
我有一个关于WaitHandle.WaitAll工作的问题,并希望得到任何帮助.
让我们假设我有这样的情况:父线程正在打开几个子线程,并且必须等待"做其他事情",直到子线程完成他们的工作.
我使用WaitHandle.WaitAll并希望继续使用此方法.(没有Thread.Join等,请:))
ManualResetEvent[] events = new ManualResetEvent[list.Count];
foreach (string row in list)
{
events[i] = new ManualResetEvent(false);
Thread thread = new Thread(new ParameterizedThreadStart(DoSomething));
thread.Start(events[i]); // start child thread
System.Threading.Thread.Sleep(1000000);
i++;
}
WaitHandle.WaitAll(events); // wait for child threads finish their work
...
...
private DoSomething(object sth)
{
// some stuff that executes only 1 second
ManualResetEvent.Set()
}
Run Code Online (Sandbox Code Playgroud)
因此,第一个新启动的子线程的情况是调用ManualResetEvent.Set()是在父线程中调用WaitHandle.WaitAll(事件)之前.因为打开新子线程的循环有一些长时间超时.
所以我的问题,不是这样的时间问题吗?不应该在调用ManualResetEvent.Set()之前调用WaitHandle.WaitAll吗?
| 归档时间: |
|
| 查看次数: |
7200 次 |
| 最近记录: |