2012-04-10 11 views
1

Nachdem ich einen asynchronen Anruf in C# gemacht habe, möchte ich in der Lage sein, Timeouts zu testen, damit ich nicht unbegrenzt auf eine Antwort warten kann. Hier ist mein Code:C# Timeouts bei asynchronen Aufrufen

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

Gibt es eine Möglichkeit für EndInvoke für eine begrenzte Zeit zu warten (Timeout)?

Wenn nicht, gibt es einen alternativen Weg?

Antwort

2

Sie können Folgendes versuchen;

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