我打電話第三方庫的API 運行方法如下如何timout這項任務
await Task.Factory.StartNew(() => ThirdPartLibraryAPI.Run());
我想設置一些超時在此情況下,在這個API的時間太長。我怎樣才能做到這一點?
我打電話第三方庫的API 運行方法如下如何timout這項任務
await Task.Factory.StartNew(() => ThirdPartLibraryAPI.Run());
我想設置一些超時在此情況下,在這個API的時間太長。我怎樣才能做到這一點?
下面的代碼片段:
var timeoutTask = Task.Delay(1500);
//using .ContinueWith(t => /*stuff to do on timeout*/);
//will cause the code to execute even if the timeout did not happen.
//remember that this task keeps running. we are just not waiting for it
//in case the worker task finishes first.
var workerTask = Task.Run(() => { ThirdPartLibraryAPI.Run() });
var taskThatCompletedFirst = await Task.WhenAny(timeoutTask, workerTask);
//stuff to do on timeout can be done here
//if (taskThatCompletedFirst == timeoutTask)
創建使用Task.Delay()另一個任務,然後使用Task.WhenAny(),只在等待首先完成任務。 更多在http://stackoverflow.com/questions/9846615/async-task-whenall-with-timeout – sudheeshix 2015-01-09 19:47:16
我不知道這是如何適用於這種情況下,因爲我只有一個任務。可能是如果你可以用代碼發佈答案? – BKS 2015-01-09 19:52:34