【发布时间】:2012-07-05 09:24:13
【问题描述】:
我的申请有点问题。对于我的应用程序,我想通过 webclient.DownloadFileAsync 下载一些文件,如果用户在下载仍在运行时退出程序,我想取消该 webclient 进程并删除该文件。
我已经使用以下代码进行了尝试,但它并不能完全正常工作,因为我总是收到 IOException(其他进程正在使用的文件)。
for (z = 0; z < CheckedCount; z++)
{
MultiWebclient[z].CancelAsync();
MultiWebclient[z].Dispose();
dgvDownloads.Rows[z].Cells[5].Value = "Canceled";
File.Delete(selectedFolder + _downloadRowNameList[z] + ".mp4");
}
【问题讨论】:
-
@mydogisbox,根据异常,我猜是File.Delete调用。
-
@AndreCalil 不知怎的,我的大脑过滤掉了那部分,哈哈
-
@f4bzen,你确定 CancelAsync 完成了这个过程吗?也许 Dispose 调用并没有改变任何东西
-
@f4bzen,你试过调用 Dispose(true) 吗?查看 MSDN 上的文档:msdn.microsoft.com/en-us/library/d9yzd5cx.aspx
-
注意CancelAsync()中的“async”这个词。这意味着它不会立即取消。您必须在完成的事件处理程序中删除该文件。
标签: c# webclient ioexception