По существу, я работаю с этим:
var data = input.AsParallel();
List<String> output = new List<String>();
Parallel.ForEach<String>(data, line => {
String outputLine = "";
// ** Do something with "line" and store result in "outputLine" **
// Additionally, there are some this.Invoke statements for updating UI
output.Add(outputLine);
});
Вход представляет собой объект List<String>
. Оператор ForEach()
выполняет некоторую обработку по каждому значению, обновляет пользовательский интерфейс и добавляет результат в output
List
. Есть ли что-то в этом роде?
Примечания:
- Порядок вывода неважный
Update:
Основываясь на полученной обратной связи, я добавил инструкцию lock
в оператор output.Add
, а также код обновления пользовательского интерфейса.