JSp*_*ang 3 c# delegates asynchronous
我已经在我想要做的事情下面放了一些非常基本的代码.我有'DoSomethingAshnc'方法执行异步操作.我希望'DoSomething'方法是一个不接受action参数并返回int的同步方法.
public void DoSomething(Action<int> actionToPerformOnComplete)
{
DoSomethingAsync(delegate(int val)
{
actionToPerformOnComplete(val);
});
}
Run Code Online (Sandbox Code Playgroud)
是否甚至可以让'DoSomething'返回一个整数,就像方法同步发生一样?
您需要在同步方法的最后添加一些内容,告诉它等待另一个调用完成.我假设您的异步方法将有一个事件告诉调用者何时完成.
如果是这样,那么我建议使用类似于ManualResetEvent的东西,在同步线程中等待它,并在异步的Finish事件接收器中设置它.
例:
public void DoSomething(Action<int> actionToPerformOnComplete)
{
ManualResetEvent mre = new ManualResetEvent(false);
DoSomethingAsync(delegate(int val)
{
try
{
actionToPerformOnComplete(val);
}
finally
{
mre.Set();
}
});
mre.WaitOne();
}
Run Code Online (Sandbox Code Playgroud)