Что происходит с данными, которые передаются фоновому исполнителю и от него?

Что происходит с данными, которые передаются фоновому исполнителю и от него?

Данные передаются из основного потока в фоновый рабочий процесс с помощью 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.

5
задан 6 July 2011 в 22:04
поделиться