基本上,我正在使用这个:
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()
语句对每个值进行一些处理,更新UI,并将结果添加到output
List
中。这种方法本身有什么问题吗?
注:
- 输出顺序不重要
更新:
根据我收到的反馈,我已经在output.Add
语句和UI更新代码中手动添加了lock
。
lock
等的方法。 - Marc Gravell