【发布时间】:2018-10-04 07:33:52
【问题描述】:
我正在尝试将文本拆分为具有多个拆分字符的单词。
使用普通的 ForEach,我得到了 590 个单词,但是当我使用 Parallel.ForEach 或 Task 时,我得到了随机的单词数:560、583、579、....
我也用过 Task.WaitAll(mytasklis) ,但也没有用。
这是我的代码:
foreach (string _Word_ in _Input_Text.Split(_split_chars))
{
if ((_Word_.Length != 0) && (_Word_.Length <= 50) &&
(string.IsNullOrEmpty(_Word_) == false))
{
ALL_WORDS.Add(_Word_.ToLower());
}
}
这有什么问题?我只是用 Parallel.ForEach 更改正常的 foreach 或将此代码设置在新的 Task(()=> 中,但没有用。
谢谢
【问题讨论】:
-
我将继续假设
ALL_WORDS不是线程安全集合。使用ConcurrentBag<string>或其他东西。你能说明ALL_WORDS的定义吗? -
无论如何我都质疑在这种特定情况下使用多线程 - 它不太可能让它更快。
标签: c# foreach parallel-processing