如何将行写入文本文件线程安全-多线程
本文关键字:线程 文件 安全 多线程 文本 | 更新日期: 2023-09-27 18:01:46
我刚试过,失败了
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);
}
}
是c# 4.5 WPF应用程序
那么你建议用什么方法最有效地多线程写入文本文件
这个怎么样?
TextWriter.Synchronized(myWriter).WriteLine("Hello World!!!");
您可以使用简单的TPL方式,但您可以设置:
void writeFile()
{
for (int k = 0; k < 10000; k++)
{
int irTempPara = k;
Task.Factory.StartNew(() =>
{
writeFileForReal(irTempPara);
}, TaskCreationOptions.LongRunning); // this way you do not need sleep
// System.Threading.Thread.Sleep(10);
}
}
http://coderkarl.wordpress.com/2012/12/13/long-running-tasks-and-threads/在多线程中绝对不能依赖Sleep进行同步。相反,可以考虑使用同步机制,如信号量或互斥锁。