C # Запись в текстовый файл безопасно с кучами потоков
Итак, моя программа имеет около 30 потоков, и мне нужно сделать запись некоторой информации, собранной через каждый поток.
Я сделал это следующим образом: создал открытый статический StringBuilder в классе Program, а затем каждый поток будет вызывать метод 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!");
}
}
Это нормальный способ сделать это?
Спасибо