2017-05-22 89 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); 
     } 

希望它可以帮助!