Spi*_*rix 1 c# multithreading file
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
}
}
Run Code Online (Sandbox Code Playgroud)
尽管FileShare设置为"None",但会启动异常"进程无法访问该文件,因为它正被另一个进程使用.
我处于多线程上下文中,并且文件未被写入/读取别的地方.
为什么?
FileShare.None说"不要让任何人分享这个文件" - 与你想要的相反.我相信你是在FileShare.ReadWrite之后.
话虽如此,我建议完全避免这个问题.在单个线程中处理您的写入会更好,并使用生产者/消费者方法来请求添加条目.
该BlockingCollection<T>班都非常好,这种类型的场景.你可以有多个线程,每个线程都为集合添加一个新的"条目",一个线程在后台运行,只调用GetConsumingEnumerable(),并写出所有的值.