2017-05-22 28 views
5

Zajmuję się podstawową aplikacją .net przy użyciu RestSharp.RestClient (105.2.4-rc4-24214-01). ustawićRestSharp.RestClient ignoruje timeout

RestClient.Timeout=1 

lub

RestClient.Timeout=10000 

a następnie zadzwonić do mojego testu API

var tcs = new TaskCompletionSource<IRestResponse>(); 
RestClient.ExecuteAsync(request, response => { tcs.SetResult(response); }) 
return tcs.Task.Result; 

Ale to nadal używać wartości domyślnej 100000 i wygenerować "Zadanie zostało anulowane." wyjątek tylko po 100000 ms.

Jak mogę zmienić tę wartość?

+0

Czy ustawiasz limit czasu konkretnej instancji RestClient, której używasz do wysyłania żądania? – 108

+0

tak, jestem pewien, że jestem –

+0

Ten sam problem tutaj, ustawiam limit czasu i ReadWriteTimeout i to nie działa. – Darxis

Odpowiedz

0

Możesz użyć CancellationTokenSource i użyć jego tokena, aby przerwać uchwyt do odpowiedzi. Spróbuj poniżej kod, aby umieścić 10 sekund timeout

System.Threading.CancellationTokenSource cts = new System.Threading.CancellationTokenSource(); 
cts.CancelAfter (TimeSpan.FromMilliseconds(10000)); 
var tcs = new TaskCompletionSource<IRestResponse>(); 
RestRequestAsyncHandle handle = RestClient.ExecuteAsync(request, response => { tcs.SetResult(response); }) 
using (cts.Token.Register(() => handle.Abort())) 
     { 
     return (RestResponse)(await tcs.Task); 
     } 

nadzieję, że pomoże !!