如何调用返回 bool 值的方法,但是在该方法内部为了确定 bool 值,它异步地调用Web服务?
bool myBool = GetABoolean(5);
public bool GetABoolean(int id)
{
bool aBool;
client.CallAnAsyncMethod(id); // value is returned in a completed event handler. Need to somehow get that value into aBool.
return aBool; // this needs to NOT execute until aBool has a value
}
因此,我需要的是让GetABoolean方法等待CallAnAsyncMethod完成并返回一个值,然后再将bool返回给调用方法。
我不确定该怎么做。
最佳答案
大多数异步方法返回 IAsyncResult。
如果您这样做,您可以使用 IAsyncResult.AsyncWaitHandle 阻塞 (IAsyncResult.AsyncWaitHandle.WaitOne) 阻塞直到操作完成。
IE:
bool aBool;
IAsyncResult res = client.CallAnAsyncMethod(id);
res.AsyncWaitHandle.WaitOne();
// Do something here that computes a valid value for aBool!
return aBool;