我在下面放置了一些非常基本的代码来说明我正在尝试做的事情。我有执行异步操作的“DoSomethingAshnc”方法。我希望“DoSomething”方法成为同步方法,不接受操作参数并返回 int。
public void DoSomething(Action<int> actionToPerformOnComplete)
{
DoSomethingAsync(delegate(int val)
{
actionToPerformOnComplete(val);
});
}
是否有可能让“DoSomething”返回一个整数,就好像该方法同步发生一样?
您需要在同步方法的末尾添加一些内容,以告诉它等待其他调用完成。我假设您的异步方法将有一个事件来告诉调用者它何时完成。
如果是这样,那么我建议使用类似 ManualResetEvent 的东西,在同步线程中等待它,并将其设置在异步线程的 Finish 事件接收器中。
Example:
public void DoSomething(Action<int> actionToPerformOnComplete)
{
ManualResetEvent mre = new ManualResetEvent(false);
DoSomethingAsync(delegate(int val)
{
try
{
actionToPerformOnComplete(val);
}
finally
{
mre.Set();
}
});
mre.WaitOne();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)