RestSharp.RestClient忽略超时

Tim*_*hko 6 .net timeout restsharp asp.net-core

我正在使用RestSharp.RestClient(105.2.4-rc4-24214-01)开发.net核心应用程序.我设置

RestClient.Timeout=1 
Run Code Online (Sandbox Code Playgroud)

要么

RestClient.Timeout=10000
Run Code Online (Sandbox Code Playgroud)

然后调用我的测试API

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

但它仍然使用默认值100000并生成"任务被取消".异常仅在100000毫秒之后.

我怎样才能改变这个值?

小智 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);
        }
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!!