C#超时异步调用

时间:2012-04-10 10:12:14

标签: c# asynchronous timeout

在C#中进行异步调用之后,我希望能够测试超时,这样我就不会无限期地等待答案。这是我的代码:

RemoteAsyncDelegate RemoteDel = new RemoteAsyncDelegate(obj.MethodHello);
// Call delegate to remote method
IAsyncResult RemAr = RemoteDel.BeginInvoke(null, null);
Console.WriteLine(RemoteDel.EndInvoke(RemAr));

EndInvoke是否有办法等待有限的时间(超时)?

如果没有,还有另一种方法吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下操作;

if(RemAr.AsyncWaitHandle.WaitOne(1000)) // timeout value
{
   Console.WriteLine(RemoteDel.EndInvoke(RemAr));
}
else
{
   //throw exception etc.
}