多个线程安全地附加一个文件



在。net框架中,我如何安全地让多个线程写入单个文件?

如果有帮助,这里有一些背景,但以上是我的主要目标。

  • 每个线程将追加一行。只要每个输出都有自己的行,它就不是特定于订单的
  • 对于上下文,线程可以尝试每秒写大约1次。在某些情况下,它将是每几分钟一次
  • 我还想锁定文件,以便其他用户/应用程序不能在它运行时编辑它

这个代码可以工作吗?

private void button1_Click(object sender, EventArgs e) {
Thread t1 = new Thread(DoIt);
Thread t2 = new Thread(DoIt);
t1.Start("a");
t2.Start("b");
Thread.Sleep(2000);
Environment.Exit(0);
}
private void DoIt(object p) {
using (FileStream fs = new FileStream(FileName, FileMode.Open, FileSystemRights.AppendData,
FileShare.Write, 4096, FileOptions.None)) {
using (StreamWriter writer = new StreamWriter(fs)) {
writer.AutoFlush = true;
for (int i = 0; i < 20; ++i)
writer.WriteLine("{0}: {1:D3} {2:o} hello", p, i, DateTime.Now);
}
}
}

来源:如何在c#中执行原子写/追加操作,或者如何使用FILE_APPEND_DATA标志打开文件?

Make a singleton File with Interface
interface IFile{
void Open(string Filename)
void CheckOPEN()
void Close()
void Write(string Text) // Check if file is opened using CheckOPEN() if not OPEN and //write
}


While Inheriting write all code in each function inside the lock statement
lock (x)
{
// Your code...
}

相关内容

最新更新