我如何知道是否取消了对WebClient.DownloadFileTaskAsync的调用?
我的方法调用是这样的:
WebClient webclient = new WebClient();
await webClient.DownloadFileTaskAsync(uri, filename);
然后通过以下方式取消呼叫:
webClient.CancelAsync();
当await继续时,我怎么知道它是成功的还是被取消了?
答案 0 :(得分:4)
使用await
时,如果您正在等待的对象被取消,则会抛出OperationCanceledException
个对象。
如果任务未取消,执行将在await
点之后正常恢复。
答案 1 :(得分:1)
如果我记得很清楚,你只需检查你期待的Task
对象。
WebClient webclient = new WebClient();
var task = webClient.DownloadFileTaskAsync(uri, filename);
await task;
稍后,您可以检查它:
task.Status
task.IsCancelled
task.IsCompleted -> task.Result
task.IsFaulted -> task.Exception
...或者只是检查 Jean Hominal 关于该主题的优点(在任务失败时,等待只是抛出而不是继续)。
答案 2 :(得分:0)
当DownloadFileTaskAsync
方法返回任务时,您应该只需查看IsCancelled
属性。
if (task.IsCancelled) {
// Task was cancelled.
}
请看这个链接:
http://msdn.microsoft.com/en-us/library/system.threading.tasks.task(v=vs.110).aspx
IsCancelled - 获取此Task实例是否已完成执行 由于被取消。