我使用C#.NET,vs 2008,.net 3.5
对我来说,很难,但我需要C#中的示例代码:
例如,在我的问题中。
我尝试删除文件,我得到“进程无法访问文件'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 obtener acceso alarchivo'00000004.PDF'polqueestásiendoutilizado 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()
我需要一个错误代码来处理该异常。在Trace中,我见过System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)
如何获取IOException的错误代码“进程无法访问文件'XYZ',因为它正由另一个进程使用。”
答案 0 :(得分:9)
您可能已经注意到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。
答案 1 :(得分:1)
(标记为CW,因为这实际上只是一个扩展评论)
为什么需要错误代码?
IOException
。答案 2 :(得分:0)
答案 3 :(得分:-1)
查看IOException类的HRESULT
属性。这应该返回操作的Win32 HRESULT(这是我认为你正在寻找的?)。