C# System.ComponentModel.Win32Exception
C# System.ComponentModel.Win32Exception
我一直在尝试从网站下载一个程序,然后 运行 说程序。当我 运行 它时,我得到以下异常。我是 C# 的新手,所以请使用简单的语言。
System.ComponentModel.Win32Exception: 'The process cannot access the file because it is being used by another process'
没有其他进程正在使用此程序,应该 运行 没问题。
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");
,程序将 运行
代码有问题。首先,它使用 DownloadFileAsync,它(正如它所说)在后台下载。该代码没有得到文件已下载的任何确认 - 它只是休眠 1 秒,'hopes' 那是足够的时间来下载文件。
该代码确实注册了一个 FileDownloadComplete 回调,但是您没有在您的示例中包含该回调的代码;它很可能是您错误的根源。你能post完整的例子吗?
因为当您注释掉 DownloadFileAsync 时您说您的程序运行良好,您的磁盘上必须已经存在 Example.exe 的副本。 DownloadFileAsync 将覆盖现有文件 - 但前提是它没有被锁定。发生的事情是 1 秒的睡眠时间不足以完成下载;然后你的程序启动现有的 Example.exe 并锁定它,然后 DownloadFileAsync 完成并尝试将临时下载的文件复制到你已经 运行 并且拥有的现有 Example.exe 的顶部处于锁定状态。
Example.exe 正在写入。要停止错误,请让程序等待 Example.exe 完成下载。
我一直在尝试从网站下载一个程序,然后 运行 说程序。当我 运行 它时,我得到以下异常。我是 C# 的新手,所以请使用简单的语言。
System.ComponentModel.Win32Exception: 'The process cannot access the file because it is being used by another process'
没有其他进程正在使用此程序,应该 运行 没问题。
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");
,程序将 运行代码有问题。首先,它使用 DownloadFileAsync,它(正如它所说)在后台下载。该代码没有得到文件已下载的任何确认 - 它只是休眠 1 秒,'hopes' 那是足够的时间来下载文件。
该代码确实注册了一个 FileDownloadComplete 回调,但是您没有在您的示例中包含该回调的代码;它很可能是您错误的根源。你能post完整的例子吗?
因为当您注释掉 DownloadFileAsync 时您说您的程序运行良好,您的磁盘上必须已经存在 Example.exe 的副本。 DownloadFileAsync 将覆盖现有文件 - 但前提是它没有被锁定。发生的事情是 1 秒的睡眠时间不足以完成下载;然后你的程序启动现有的 Example.exe 并锁定它,然后 DownloadFileAsync 完成并尝试将临时下载的文件复制到你已经 运行 并且拥有的现有 Example.exe 的顶部处于锁定状态。
Example.exe 正在写入。要停止错误,请让程序等待 Example.exe 完成下载。