我如何发现如果WebClient.DownloadFileTaskAsync被取消
本文关键字:WebClient 如果 DownloadFileTaskAsync 取消 发现 何发现 | 更新日期: 2023-09-27 18:15:44
我怎么知道如果调用WebClient。DownloadFileTaskAsync被取消了?
我的方法调用是这样的:
WebClient webclient = new WebClient();
await webClient.DownloadFileTaskAsync(uri, filename);
调用然后在其他地方取消:
webClient.CancelAsync();
当等待继续时,我如何知道它是成功的还是被取消的?
当使用await
时,如果您正在等待的对象被取消,则会抛出OperationCanceledException
对象。
如果未取消任务,则在await
点后恢复正常执行。
如果我没记错的话,您可以简单地检查您等待的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
MSDN:任务
…或者看看Jean Hominal的关于这个主题的优秀观点(在任务失败时,await只是抛出而不是继续)。
由于DownloadFileTaskAsync
方法返回一个Task,您应该能够简单地查看IsCancelled
属性。
if (task.IsCancelled) {
// Task was cancelled.
}
查看此链接:
http://msdn.microsoft.com/en-us/library/system.threading.tasks.task (v = vs.110) . aspx
IsCancelled -获取此任务实例是否已完成执行因为被取消了