当前位置:  开发笔记 > 编程语言 > 正文

如何最好等待文件锁释放

如何解决《如何最好等待文件锁释放》经验,为你挑选了1个好方法。

我有一个应用程序,我有时需要从正在写入的文件中读取并因此被锁定.正如我从其他问题中理解的那样,我应该捕获IOException并重试直到我能够阅读.

但我的问题是我如何确定该文件已被锁定,并且它不是另一个IOExcetpion发生的.



1> Darin Dimitr..:

当您打开一个文件以便在.NET中读取时,它会在某个时候尝试使用CreateFile API函数创建一个文件句柄,该函数设置可用于查看失败原因的错误代码:

const int ERROR_SHARING_VIOLATION = 32;
try
{
    using (var stream = new FileStream("test.dat", FileMode.Open, FileAccess.Read, FileShare.Read))
    {
    }
}
catch (IOException ex)
{
    if (Marshal.GetLastWin32Error() == ERROR_SHARING_VIOLATION)
    {
        Console.WriteLine("The process cannot access the file because it is being used by another process.");
    }
}


不幸的是,您无法确定Win32错误是否真的是由CreateFile API调用引起的.这可能会在另一个版本的框架中发生变化.要确定,请自行调用Win32 API.
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有