使用
下载数据时byte[] data = await webClient.DownloadDataTaskAsync(uri);
或任何其他async
方法,有什么方法可以 停止 下载吗?我不想只是忽略结果。我想中止下载,该下载在移动设备上可能会很昂贵,并且如果用户出于支持其他下载而取消了该下载,则会减慢其他下载的速度。
我尝试了
webClient.CancelAsync();
但它似乎只是在下载完成后引发TaskCanceledException
。通过将等待的下载包装在try-catch块中,可以看到这一点。 CancelAsync()
之后很长一段时间才捕获该捕获。
答案 0 :(得分:-1)
您可以继续使用 CancelAsync(),但是您需要验证文件是否在 DownloadFileCompleted事件
中未被取消。webClient.DownloadFileCompleted += (s, e) =>
{
if (e.Cancelled)
{
//cleanup delete partial file
Client.Dispose();
return;
}
else
{/* the file is not cancelled, do what you need with it here, no TaskCanceledException would occure */}
}