该进程的ErrorCode无法访问文件'XYZ',因为它是由另一个进程使用的
-
16-09-2020 - |
题
我使用C#.NET,VS 2008,.NET 3.5
对我来说,很难,但我需要C#中的示例代码:
- 如何获得IoException的错误代码“此过程无法访问文件”XYZ“,因为它被另一个进程使用。” 例如,在我的问题中。
我尝试删除文件,我得到“该进程无法访问文件'XYZ',因为它被另一个进程使用。”例外。
try
{
File.Delete(infoFichero.Ruta);
}
catch (IOException ex)
{
// ex.Message == "The process cannot access the file 'XYZ' because it is being used by another process."
}
.
但如果.NET是西班牙语,我得到“el proceso no puede obener acceso al Archivo' 00000004.pdf'porquo esiendo ultizado en otro proceso”消息。
System.IO.IOException: El proceso no puede obtener acceso al archivo '00000004.PDF' porque está siendo utilizado en otro proceso.
en System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
en System.IO.FileInfo.Delete()
.
我需要一个例外的错误代码。在跟踪中,我已经看到了system.io .__错误.winioError(Int32 ErrarCode,String solyfullpath)
如何获得IoException的错误代码“该进程无法访问文件”XYZ“,因为它被另一个进程使用。”
解决方案
您可能已经注意到HResult属性无法访问。解决方法是使用Marshal.getLastWin32Error()方法来获取本机Windows错误代码。像这样:
catch (IOException ex) {
int err = System.Runtime.InteropServices.Marshal.GetLastWin32Error();
if (err == 32) Console.WriteLine("It's locked");
// etc..
}
.
错误代码32在SDK中名为ERROR_SHARING_VIOLATION。
其他提示
不隶属于 StackOverflow