2017-05-22 326 views
5

我正在使用RestSharp.RestClient(105.2.4-rc4-24214-01)開發.net核心應用程序。 我設置RestSharp.RestClient忽略超時

RestClient.Timeout=1 

RestClient.Timeout=10000 

,然後調用我的測試API

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

但它仍然使用默認值100000,產生 「任務被取消。」只有在100000毫秒之後纔是例外。

我該如何更改此值?

+0

您是否設置了用於發送請求的特定RestClient實例的超時時間? – 108

+0

是的,我相信我是 –

+0

同樣的問題在這裏,我設置超時和ReadWriteTimeout,它不起作用。 – Darxis

回答

0

您可以使用CancellationTokenSource並使用其令牌中止響應的句柄。 請嘗試以下代碼,把10秒的超時

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); 
     } 

希望它可以幫助!