我正在尝试从互联网上下载文件。我有一个if语句,而else子句触发文件下载。这是我的代码:
if (!FileDownload)
{
}
else
{
using (WebClient wc = new WebClient())
{
wc.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
wc.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
wc.DownloadFileAsync(new Uri("https://www.google.com/Program.exe"),Application.StartupPath);
MessageBox.Show("Yes");
}
当我尝试运行程序时,出现以下错误:
错误1:
Could not copy "obj\Debug\Program.exe" to "bin\Debug\Program.exe". Exceeded retry count of 10. Failed.
错误2:
Unable to copy file "obj\Debug\Program.exe" to "bin\Debug\Program.exe". Could not find file 'obj\Debug\Program.exe'.
大约10条警告带有相同的信息:
Could not copy "obj\Debug\Program.exe" to "bin\Debug\Program.exe". Beginning retry 1 in 1000ms. Could not find file 'obj\Debug\Program.exe'.
但是,一旦我在if语句中删除了else子句,程序就会执行而不会出现任何错误。 else子句中的下载代码显然导致了问题,但我不确定原因。我在不同的事件中使用了相同形式的相同代码,并且它运行完美。任何帮助表示赞赏。
我已经尝试过了:
答案 0 :(得分:2)
只需做一件事打开Visual Studio作为管理员权限,如下图所示。
并解决问题 在关闭应用程序之后,请执行以下操作以退出所有进程,这样您就不会遇到其他问题。
试试这个,我想你会得到你的解决方案
在主要表单或 MDI 表单的结束事件中添加 Application.Exit(),如下所示
Private Sub frmMain_FormClosing(sender As Object,e As System.Windows.Forms.FormClosingEventArgs)处理Me.FormClosing Application.Exit() 结束子
答案 1 :(得分:0)
我确定您没有从正确的 bin
文件夹中删除文件。打开名为TaskManager
的任何程序的Program.exe
外观。从Open file Location
验证进程的运行位置。
杀死 Program.exe
并再次尝试重建。如果它工作,那么bin输出路径将映射到此位置。
仔细查看错误消息: 无法复制文件" obj \ Debug \ Program.exe"到" bin \ Debug \ Program.exe"。 无法找到文件' obj \ Debug \ Program.exe'
您是否配置了复制文件的PostBuild步骤?如果是,请删除它。
同时编辑.csproj文件并搜索' obj \ Debug'如果有任何与之匹配的内容,请删除该内容并重试。
更高级的问题排查:
使用process monitor并过滤VisualStudio和路径的过程。见下面的截图
再次构建项目并调查分析日志,以便它尝试复制Program.exe。
添加/删除更多过滤器以查看复制Program.exe的原因。另请查找Result
列中的任何错误。
答案 2 :(得分:0)