gpt4 book ai didi

c# - 使用命名的互斥锁来锁定文件

转载 作者:太空狗 更新时间:2023-10-29 19:39:45 24 4
gpt4 key购买 nike

我正在使用命名互斥体来锁定对文件(路径为“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();
}
}

因此,通过这种方式,代码只会在已经处理同一个文件时阻塞线程。好吧,我对此进行了测试并且似乎工作正常,但我真的很想知道您对此的看法。

最佳答案

由于您谈论的是多线程的生产者-消费者情况,“标准解决方案是使用 BlockingCollection,它是 .NET 4 及更高版本的一部分 - 几个信息链接:

如果您只是想让锁定过程起作用,那么:

使用 ConcurrentDictionary结合 TryAdd 方法调用...如果它返回 true 那么文件没有被“锁定”并且现在被“锁定”所以线程可以继续 - 并且“通过在最后调用 Remove 来解锁”它...同时任何其他线程都会得到 false 并且可以决定要做什么...

我肯定会推荐 BlockingCollection 方法!

关于c# - 使用命名的互斥锁来锁定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com