gpt4 book ai didi

c# - 为什么这段代码中的锁不起作用?

转载 作者:太空狗 更新时间:2023-10-29 22:03:07 25 4
gpt4 key购买 nike

对于一个非常基本的记录器,使用这段代码:

lock (string.Concat("LogWritter_", this.FileName))
{
using (var fileStream = File.Open(this.FileName, FileMode.Append, FileAccess.Write, FileShare.Read))
{
using (var w = new StreamWriter(fileStream))
{
w.Write(message);
}
}
}

当我同时从几个线程尝试时,我很快就得到了错误:

The process can't access the file because its being used by another file.

为什么锁没有阻止线程同时访问文件?

线程调用同一个实例还是不同实例调用同一个文件并不重要。我还认为这可能是因为在 Windows 中写入文件时会出现一些延迟,但在 Linux 上也会发生同样的事情。

最佳答案

您正在锁定一个临时字符串。你必须引入一个静态对象来锁定。

关于c# - 为什么这段代码中的锁不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453339/

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