【发布时间】:2018-03-11 07:05:53
【问题描述】:
我一直在尝试从网站下载一个程序,然后运行该程序。当我运行它时,我得到以下异常。我是 C# 新手,所以请使用简单的语言。
System.ComponentModel.Win32Exception: '进程无法访问该文件,因为它正被另一个进程使用'
没有其他进程正在使用这个程序,应该可以正常运行。
if (restart == "1")
{
wc.DownloadFileCompleted += new
AsyncCompletedEventHandler(FileDowloadComplete);
Uri imageurl = new Uri(Website);
System.Threading.Thread.Sleep(1000);
wc.DownloadFileAsync(imageurl, "Example.exe");
System.Threading.Thread.Sleep(1000);
System.Diagnostics.Process.Start("Example.exe");
System.Threading.Thread.Sleep(1000);
}
下载工作正常,如果我注释掉 wc.DownloadFileAsync(imageurl, "Example.exe"); 程序将运行。
【问题讨论】:
-
该文件正在被另一个进程使用。它就在那里用黑白色写着。我假设您在尝试覆盖它的同时运行
Example.exe? -
没有。正如我所说,没有什么是读/写或以任何方式监控这个程序。如果我要评论
wc.DownloadFileAsync(imageurl, "Example.exe");它将完美运行。我很确定这与此有关。 -
使用Process Explorer 找出正在使用
Example.exe的内容。错误消息不是红鲱鱼。当您注释掉该行时它会起作用,因为您不再尝试使用DownloadFileAsync方法写入文件,因此没有机会发现该文件已在使用中! -
顺便说一句,如果这还不是很清楚:如果 Example.exe 是系统上正在运行的进程,Windows 将阻止写入 Example.exe。
-
约翰 85 感谢您的建议。我让程序等待了很长一段时间,它修复了它。
标签: c# win32exception