首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检测文件是否被另一个进程(或者实际上是同一个进程)锁定

检测文件是否被另一个进程(或者实际上是同一个进程)锁定
EN

Stack Overflow用户
提问于 2009-01-08 16:05:34
回答 4查看 59.6K关注 0票数 20

这就是我目前所做的。我尝试在FileShare设置为none的情况下打开该文件。所以我想独占访问这个文件。如果我不能得到它,那么很可能其他人已经锁定了文件。

一定有更好更快的方法。有什么想法吗?

代码语言:javascript
复制
            try
            {
                using (FileStream fs = File.Open(GetLockFilename(), FileMode.Open, FileAccess.ReadWrite, FileShare.None))
                {
                    fs.Close();
                }
                // The file is not locked
            }
            catch (Exception)
            {
                // The file is locked
            }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-08 16:08:47

不需要首先检查文件是否被锁定,然后访问它,因为在检查和访问之间,某些其他进程仍然可能获得对文件的锁定。所以,你所做的是正确的,如果你成功了,用你的文件做你的工作。

票数 26
EN

Stack Overflow用户

发布于 2009-01-08 16:10:46

事实是,即使你想出了一种方法,在你打开文件的下一行时,检查文件是否“锁定”,操作系统中的其他东西可能会试图获取该文件,并且你打开它的代码无论如何都会失败。不管怎么说,你都得试一试。因此,我说不。没有更好的解决方案了。

票数 5
EN

Stack Overflow用户

发布于 2009-01-08 16:09:21

不,据我所知,没有调用来检查文件是否正在使用-您必须尝试打开它并像您正在做的那样处理异常。另一个问题是,很难区分正在使用和不允许访问。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/424830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档