C # Escribir en un archivo de texto de forma segura con un montón de subprocesos
Bueno, mi programa tiene alrededor de 30 subprocesos, y necesito hacer un registro de parte de la información recopilada a través de cada subproceso.
La forma en que lo hice es mediante la creación de un StringBuilder estático público en la clase Program, y luego cada hilo llamará al método AppendLine a esta instancia de StringBuilder cada pocos minutos. Luego, cada 30 minutos, otro Thread dedicado a escribir con StreamWriter hace exactamente eso.
Por ejemplo:
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!");
}
}
¿Es esta una buena forma de hacer esto?
Gracias