Pau*_*ick 10 .net file robustness ioexception
当我打开一个文件时,我想知道它是否被另一个进程使用,所以我可以进行特殊处理; 任何其他IOException我都会冒泡.IOException的Message属性包含"进程无法访问文件'foo',因为它正由另一个进程使用.",但这不适用于编程检测.检测另一个进程正在使用的文件的最安全,最健壮的方法是什么?
Jar*_*Par 14
IOException
当从Win32本机函数返回的错误代码是ERROR_SHARING_VIOLATION
(Documentation)时,抛出此特定版本.它具有数值0x20
但实际上存储在异常0x80070020
的HRESULT
属性上(它是调用MakeHRFromErrorCode的结果).
因此,检查共享冲突的编程方法是检查值HResult
上的属性. IOException
0x80070020
public static bool IsSharingViolation(this IOException ex) {
return 0x80070020 == Marshal.GetHRForException(ex);
}
Run Code Online (Sandbox Code Playgroud)
但是,我确实质疑你在由于共享违规而抛出它的场景中你想要做什么.抛出异常的那一刻,其他进程可能会退出,从而删除违规.
归档时间: |
|
查看次数: |
1826 次 |
最近记录: |