Передача списка KeyValuePair из backgroundWorker1 в backgroundWorker2 - PullRequest
1 голос
/ 18 декабря 2011

У меня есть небольшая проблема, я использую

var filelist = new List<KeyValuePair<string, string>>();
 filelist.Add(new KeyValuePair<string, string>(a, b));
 filelist.Add(new KeyValuePair<string, string>(c,d));

в backgroundWorker1, чтобы сделать то, что ему нужно, и когда backgroundWorker1 завершится, список должен быть как-то передан backgroundWorker2.1004 *

Я понятия не имею, с чего начать, поэтому любая помощь очень ценится.

Ответы [ 3 ]

1 голос
/ 18 декабря 2011

Вы можете просто запустить второй BackgroundWorker в делегате, который вы используете для обработки первого события BackgroundWorker RunWorkerCompleted.

Просто установите аргументы в вызове RunWorkerAsync BW # 2 на возвращаемое значение BW # 1.

Не похоже, что BW # 2 имеет какое-либо отношение к завершению BW # 1, поэтому нет смысла реализовывать общее состояние или вызывать события или реализовывать шаблон типа наблюдателя.

1 голос
/ 18 декабря 2011

Убедитесь, что список виден как работникам, так и переменной события (например, это может быть AutoresetEvent).Затем, когда работа со списком будет завершена в backgroundworker1, попросите второго работника прочитать его:

// prepare the list
event.Set();

В backgroundworker2 вам следует подождать в какой-то момент события:

event.WaitOne();
// use the list
0 голосов
/ 19 декабря 2011

Пуск первого RunWorkerCompleted второго с аргументом.Вот пример только для идеи о том, как отправить аргумент от первого ко второму.

...