DownloadCallback 中的 C# WebClient IOException
C# WebClient IOException in DownloadCallback
尝试下载 Minecraft 资产文件时,一半文件失败并出现下载错误:"An exception occurred during a WebClient request."
InnerException 为:“{"The process cannot access the file 'C:\Users\[redacted]\AppData\Roaming\[redacted]\Minecraft 1.10\assets\objects\bdbdf48ef6b5d0d23bbb02e17d04865216179f510a' because it is being used by another process."}
”。
我正在使用 FileDownloadCompleted
事件。
我也试过加一个“.”到每个没有正确扩展名的文件的末尾,但它没有解决问题。
另外,这个问题不一致。部分同名文件下载正常,部分文件下载失败。不过也不是网络问题,我已经在多台电脑上测试过了。
如何解决这个异常?
作为权宜之计,我添加了一个 while
循环来等待文件可用。
else if(e.Error.InnerException is IOException)
{
bool canAccess = false;
while (!canAccess)
{
try
{
File.Move(Userstate[0], Userstate[0]);
canAccess = true;
Debug.Print("Can now access file: " + Userstate[0]);
}
catch(IOException) { }
}
}
此代码是 DownloadCallback
处理程序的一部分,并检查 e.Error.InnerException
的状态。这似乎不是最好的解决方案,但这是我想出的唯一解决方案。
尝试下载 Minecraft 资产文件时,一半文件失败并出现下载错误:"An exception occurred during a WebClient request."
InnerException 为:“{"The process cannot access the file 'C:\Users\[redacted]\AppData\Roaming\[redacted]\Minecraft 1.10\assets\objects\bdbdf48ef6b5d0d23bbb02e17d04865216179f510a' because it is being used by another process."}
”。
我正在使用 FileDownloadCompleted
事件。
我也试过加一个“.”到每个没有正确扩展名的文件的末尾,但它没有解决问题。
另外,这个问题不一致。部分同名文件下载正常,部分文件下载失败。不过也不是网络问题,我已经在多台电脑上测试过了。
如何解决这个异常?
作为权宜之计,我添加了一个 while
循环来等待文件可用。
else if(e.Error.InnerException is IOException)
{
bool canAccess = false;
while (!canAccess)
{
try
{
File.Move(Userstate[0], Userstate[0]);
canAccess = true;
Debug.Print("Can now access file: " + Userstate[0]);
}
catch(IOException) { }
}
}
此代码是 DownloadCallback
处理程序的一部分,并检查 e.Error.InnerException
的状态。这似乎不是最好的解决方案,但这是我想出的唯一解决方案。