【发布时间】:2012-01-31 10:01:46
【问题描述】:
我正在使用命名互斥锁来锁定对文件(路径为“strFilePath”)的访问,如下所示:
private void DoSomethingsWithAFile(string strFilePath)
{
Mutex mutex = new Mutex(false,strFilePath.Replace("\\",""));
try
{
mutex.WaitOne();
//do something with the file....
}
catch(Exception ex)
{
//handle exception
}
finally
{
mutex.ReleaseMutex();
}
}
因此,这样代码只会在已经处理同一个文件时阻塞线程。 好吧,我对此进行了测试,似乎可以正常工作,但我真的很想知道您对此的看法。
【问题讨论】:
-
您是否正在尝试实现经典的生产者-消费者-场景?向我们提供有关您的方案的更多信息 - 很难对您的实际问题进行修剪/帮助!
-
任何其他软件,如 Windows 资源管理器、记事本等,对您的“基于互斥锁”一无所知,并且很乐意忽略它!
-
@Yahia 是的,我知道,但这不是想法。我使用这个构造在我的程序中进行线程同步。如果我不希望其他程序访问该文件,我将使用普通的文件锁定机制。
-
@Andreas 好吧,我的代码中有不同的线程可以将数据写入/删除文件,我像这样同步文件。
-
@Jurgen 您需要提供更多信息然后...您只需要一种机制来“锁定”多线程进程中的磁贴吗?您使用的是什么 .NET 版本?
标签: c# .net producer-consumer