¿Qué sucede con los datos que pasan a un trabajador de fondo y desde él?¿Qué sucede con los datos que pasan a un trabajador de fondo y desde él?
Los datos se pasan desde el hilo principal para el trabajador de fondo utilizando RunWorkerAsync:
backgroundWorker.RunWorkerAsync(myData);
Esta es recibido en el controlador de eventos DoWork en el fondo de rosca:
myData = (Data)e.Argument;
Después DoWork ha procesado el datos, lo devuelve usando e.Result:
e.Result = myData;
Esto se recibe en controlador de eventos RunWorkerCompleted en el hilo principal:
myData = (Data)e.Result;
BackgroundWorker está cuidando de pasar los datos entre las roscas. Espero pasar grandes cantidades de datos hacia y desde un trabajador en segundo plano, así que quiero saber cuál es la sobrecarga de esta transferencia, y si hay una forma mejor de procesar una gran cantidad de objetos en memoria en un trabajador de segundo plano. También me gustaría saber que es posible acceder a los datos del trabajador en segundo plano desde el hilo principal de forma segura para hilos.
Como referencia, estoy usando C#, .NET 3.5 y Windows Forms.
+1 para responder a la parte de la pregunta que se sincroniza con varios subprocesos. –