好吧,我的程序有大约30个线程,我需要记录通过每个线程收集的一些信息。C#写入文本文件安全地堆积线程
我这样做的方法是:在类Program中创建一个公共静态StringBuilder,然后每隔几分钟,每个线程将调用AppendLine方法到这个StringBuilder实例。然后,每隔30分钟,另一个专用于使用StreamWriter进行写入的线程完全可以做到这一点。
例如:
public class Program
{
public static StringBuilder sb = new StringBuilder();
public static void Main(string[] args)
{
// Start all threads
}
}
public class Example
{
Thread t1 = new Thread(() =>
{
while(true)
{
DoSomething();
}
});
Thread logThread = new Thread(() =>
{
while(true)
{
using(StreamWriter writer = new StreamWriter(Path))
{
writer.Write(Program.sb);
}
}
});
public static void DoSomething()
{
// Will do something for a few minutes.
Program.sb.AppendLine("Some text gathered before...different everytime!");
}
}
这是这样做的好方法吗?
感谢
非常感谢:) – user2764359