2012-04-10 4 views
1

После выполнения асинхронного вызова в C# я хотел бы иметь возможность протестировать таймауты, поэтому я не буду ждать бесконечно для ответа. Вот мой код:C# Таймауты при асинхронных вызовах

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

Есть ли способ для EndInvoke ждать в течение ограниченного периода времени (тайм-аут)?

Если нет, есть ли альтернативный способ?

ответ

2

Вы можете попробовать следующее:

if(RemAr.AsyncWaitHandle.WaitOne(1000)) // timeout value 
{ 
    Console.WriteLine(RemoteDel.EndInvoke(RemAr)); 
} 
else 
{ 
    //throw exception etc. 
} 
Смежные вопросы