gpt4 book ai didi

c# - 无法在多线程中访问文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:45:08 25 4
gpt4 key购买 nike

using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write, FileShare.None))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(DateTime.Now.ToString());
// multiple sw.WriteLine
}
}

尽管 FileShare 设置为“无”,但仍会启动异常“该进程无法访问该文件,因为它正被另一个进程使用。
我在多线程上下文中,文件未在其他地方写入/读取。

为什么?

最佳答案

FileShare.None正在说“不要让任何人共享此文件” - 与您想要的相反。我相信你在寻找FileShare.ReadWrite .

话虽如此,我建议完全避免这个问题。最好在单个线程中处理您的写作,并使用生产者/消费者方法来请求添加条目。

BlockingCollection<T>类在这种情况下效果很好。您可以让多个线程每个都向集合添加一个新的“条目”,并在后台运行一个线程,它只调用 GetConsumingEnumerable()。 , 并写出所有的值。

关于c# - 无法在多线程中访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094470/

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