MGS*_*oto 16 .net c# events multithreading event-handling
我有一个运行的线程,委托一些任务.单个任务完成后,会发出一个事件,说明它已完成.这些任务需要按特定顺序运行,需要等待上一个任务完成.如何让线程等到收到"任务完成"事件?(除了设置标志的明显的事件处理程序,然后是循环轮询标志的while循环)
Fre*_*örk 28
AutoResetEvent
当我需要等待异步任务完成时,我经常使用等待句柄:
public void PerformAsyncTasks()
{
SomeClass someObj = new SomeClass()
AutoResetEvent waitHandle = new AutoResetEvent(false);
// create and attach event handler for the "Completed" event
EventHandler eventHandler = delegate(object sender, EventArgs e)
{
waitHandle.Set(); // signal that the finished event was raised
}
someObj.TaskCompleted += eventHandler;
// call the async method
someObj.PerformFirstTaskAsync();
// Wait until the event handler is invoked
waitHandle.WaitOne();
// the completed event has been raised, go on with the next one
someObj.PerformSecondTaskAsync();
waitHandle.WaitOne();
// ...and so on
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19151 次 |
最近记录: |