如何将行写入文本文件线程安全 - 多线程

Mon*_*RPG 4 c# file-io multithreading thread-safety streamwriter

我刚尝试了这个但它失败了

public MainWindow()
{
    InitializeComponent();
}

private void Button_Click_1(object sender, RoutedEventArgs e)
{

    Task.Factory.StartNew(() =>
    {
        writeFile();
    });

}

TextWriter myWriter = new StreamWriter("deneme.txt");

void writeFile()
{
    for (int k = 0; k < 10000; k++)
    {
        int irTempPara = k;
        Task.Factory.StartNew(() =>
        {
            writeFileForReal(irTempPara);
        });
        System.Threading.Thread.Sleep(10);
    }
}

void writeFileForReal(int srParameter)
{
    for (int k = 0; k < 999999999; k++)
    {
        myWriter.WriteLineAsync(srParameter + "_" + k);
    }
}
Run Code Online (Sandbox Code Playgroud)

它是c#4.5 WPF应用程序

那么你建议用什么方法最有效地将线条写入文本文件和多线程

ZZZ*_*ZZZ 16

这个怎么样?

TextWriter.Synchronized(myWriter).WriteLine("Hello World!!!");
Run Code Online (Sandbox Code Playgroud)

  • 如果效率意味着性能,那么您的目标应该是线程安全,而不是效率.由于常见硬盘的物理结构(RAID除外),写入文件中的多个线程不会加快整体性能.磁盘随着r/w磁头移动而旋转,因此所有读/写请求实际上都是同步的. (2认同)