Ily*_*gan 3 c# asynchronous task begininvoke
我有一个带有StartProcessing()方法的异步类,int ResultReady()它在完成处理时引发一个事件.StartProcessing()花很少的时间.
我想同步调用这个类.我的伪代码应该是这样的:
调用StartProcessing()
等待/睡眠,直到结果准备好
返回结果
什么设计模式最适合这个?你能指点我一个代码示例吗?
一种简单的方法是使用ManualResetEvent事件处理程序和等待代码都可以访问的方法.Set从WaitOne等待线程调用事件处理程序和(或带超时的重载).请注意,这不能在STA线程上完成,因此您无法在WinForms线程(应始终为STA)中执行此操作 - 但您不应该在UI线程内等待.
像这样的东西:
var async = new AsyncClass();
var manualEvent = new ManualResetEvent();
async.ResultReady += args => manualEvent.Set();
async.StartProcessing();
manualEvent.WaitOne();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3205 次 |
| 最近记录: |