WebClient下载过程中取消下载后,无法删除部分下载的文件

weiwei830607 2009-03-10 03:10:57
我用DownloadFileAsync下载一个比较大的文件,下载过程中我点取消按钮,取消按钮事件里是关闭进度条窗口,client.CancelAsync()和删除已经下载的那部分文件,可是删除不了,说被另一个进程占用。
我进入文件夹,手动删除都无法删除,只能关闭程序后,才能删除。
请问如何删除那个文件?
...全文
469 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xl711436 2010-08-18
  • 打赏
  • 举报
回复
我遇到了类似的问题,查到了这个帖子,据验证,和 dispose没有关系,其实sleep一小段时间就可以解决此问题。

代码如下:
m_curWebClient.CancelAsync();
// m_curWebClient.Dispose();

//尝试删除未下载完成的文件,
int tryTimes = 0;
while (tryTimes < 5)
{
Thread.Sleep(100);
try
{
File.Delete(m_targetFileFullPath);
break;
}
catch
{
System.Diagnostics.Trace.WriteLine("delete error " + tryTimes.ToString());
}
finally
{
tryTimes++;
}
}
fiveandfive 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zhoufoxcn 的回复:]
释放所有托管资源,比如关闭文件及流句柄等。
程序关闭之后能删除那是因为程序关闭之后,CLR会做这些事情。
[/Quote]

很好
杰克CZ 2009-03-13
  • 打赏
  • 举报
回复
webClient.Dispose(),需要释放WebClient的托管资源,否则会占用,无法删除
lateknow 2009-03-12
  • 打赏
  • 举报
回复
在取消按钮写:
if (webClient.IsBusy)
{
webClient.CancelAsync();
webClient.Dispose();//要加上这一句.
}
周公 2009-03-12
  • 打赏
  • 举报
回复
释放所有托管资源,比如关闭文件及流句柄等。
程序关闭之后能删除那是因为程序关闭之后,CLR会做这些事情。
kkun_3yue3 2009-03-10
  • 打赏
  • 举报
回复
是不是程序里还有地方引用它,好好检查检查代码

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧