好吧,我的程序有大約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