我正在使用RestSharp.RestClient(105.2.4-rc4-24214-01)开发.net核心应用程序。 我设置了
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 :(得分:1)
文档说Request.Timeout覆盖了RestClient.Timeout。 试试这个:
var tcs = new TaskCompletionSource<IRestResponse>();
request.Timeout = 10000;
RestClient.ExecuteAsync(request, response => { tcs.SetResult(response); })
return tcs.Task.Result;
答案 1 :(得分: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);
}
希望它有所帮助!!