这就是我目前所做的。我尝试在FileShare设置为none的情况下打开该文件。所以我想独占访问这个文件。如果我不能得到它,那么很可能其他人已经锁定了文件。
一定有更好更快的方法。有什么想法吗?
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
}
发布于 2009-01-08 16:08:47
不需要首先检查文件是否被锁定,然后访问它,因为在检查和访问之间,某些其他进程仍然可能获得对文件的锁定。所以,你所做的是正确的,如果你成功了,用你的文件做你的工作。
发布于 2009-01-08 16:10:46
事实是,即使你想出了一种方法,在你打开文件的下一行时,检查文件是否“锁定”,操作系统中的其他东西可能会试图获取该文件,并且你打开它的代码无论如何都会失败。不管怎么说,你都得试一试。因此,我说不。没有更好的解决方案了。
发布于 2009-01-08 16:09:21
不,据我所知,没有调用来检查文件是否正在使用-您必须尝试打开它并像您正在做的那样处理异常。另一个问题是,很难区分正在使用和不允许访问。
https://stackoverflow.com/questions/424830
复制相似问题