我如何发现如果WebClient.DownloadFileTaskAsync被取消

本文关键字:WebClient 如果 DownloadFileTaskAsync 取消 发现 何发现 | 更新日期: 2023-09-27 18:15:44

我怎么知道如果调用WebClient。DownloadFileTaskAsync被取消了?

我的方法调用是这样的:

WebClient webclient = new WebClient();
await webClient.DownloadFileTaskAsync(uri, filename);

调用然后在其他地方取消:

webClient.CancelAsync();

当等待继续时,我如何知道它是成功的还是被取消的?

我如何发现如果WebClient.DownloadFileTaskAsync被取消

当使用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 -获取此任务实例是否已完成执行因为被取消了