c#利用EventHandler注册操作

主线程在调用一个异步的操作时,需要这个异步操作进入某个特定状态,主线程才可以继续往下执行。

(此时,并不是指这个异步操作执行完毕,因为再异步操作时会调用回调函数,不停给主线程返回数据。)

此时,可用如下操作:

1ManualResetEvent operationCompletionEvent = new ManualResetEvent(false);
2    EventHandler<OperationStateEventArgs> OnOperationStateChange = new EventHandler<OperationStateEventArgs>(delegate(object obj, OperationStateEventArgs args)
3    
4        if (args.OperationStateInfo.State == OperationState.Stopped)
5            operationCompletionEvent.Set();
6    });
7    operation.StateChanged += OnOperationStateChange;

然后,调用该异步操作后,加一句 operationCompletionEvent.WaitOne();

"ManualResetEvent"是多线程时常用的事件操作。

posted @ 2014-06-15 14:55  zzg168  阅读(178)  评论(0)    收藏  举报