Что происходит с данными, которые передаются фоновому рабочему и от него?
Данные передаются из основного потока фоновому рабочему с помощью RunWorkerAsync:
backgroundWorker.RunWorkerAsync(myData);
Получается в обработчике событий DoWork в фоновом потоке:
myData = (Data)e.Argument;
После того, как DoWork обработал данные, он возвращает их, используя e.Result:
e.Result = myData;
Получено в обработчике события RunWorkerCompleted в основном потоке:
myData = (Data)e.Result;
BackgroundWorker заботится о передаче данных между потоками. Я ожидаю передачи больших объемов данных фоновому рабочему и от него, поэтому я хочу знать, каковы издержки этого переноса и есть ли лучший способ обработки большого количества объектов в памяти в фоновом рабочем объекте. Я также хотел бы знать, что можно получить доступ к данным в фоновом режиме из основного потока в поточно-ориентированном режиме.
Для справки я использую C #, .Net 3.5 и Windows Forms.