2017-05-22 25 views
5

RestSharp.RestClient(105.2.4-rc4-24214-01)を使用して.netコアアプリケーションを開発しています。 私はRestSharp.RestClientはタイムアウトを無視します

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

私のテストAPIを呼び出すしかし、それはまだデフォルト値100000を使用して生成し、その後

RestClient.Timeout=1 

または

RestClient.Timeout=10000 

を設定し、 "タスクがキャンセルされました。"例外は100000ミリ秒後にのみ発生します。

この値を変更するにはどうすればよいですか?

+0

リクエストを送信するために使用する特定のRestClientインスタンスのタイムアウトを設定していますか? – 108

+0

はい、私は確信しています –

+0

ここに同じ問題があります。私はTimeoutとReadWriteTimeoutを設定していて、動作しません。 – Darxis

答えて

0

CancellationTokenSourceを使用して、そのトークンを使用して応答へのハンドルをアボートできます。

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

はそれが役に立てば幸い10秒のタイムアウトを置くために、コードの下にしてみてください!

関連する問題