我有一个文本文件,我将其读取为字符串content。为了识别我想要进一步处理的文本主体,我获取字符串中关键字的索引,然后将“起始”索引设置为找到的最小索引。
我尝试过这个Parallel.ForEach...
ConcurrentBag<int> indexes = new();
int index;
switch (Case)
{
case 1:
Parallel.ForEach(KeywordTypes.GetImplementedNamedObjects(), inos =>
{
index = content.IndexOf($"/begin {inos}");
index = index == -1 ? content.Length : index;
indexes.Add(index);
});
index = indexes.Min();
return index;
Run Code Online (Sandbox Code Playgroud)
... 与foreach:
foreach (string inos in KeywordTypes.GetImplementedNamedObjects())
{
index = content.IndexOf($"/begin {inos}");
index = index == -1 ? content.Length : index;
indexes.Add(index);
}
index = indexes.Min();
return index;
Run Code Online (Sandbox Code Playgroud)
其中foreach产生预期结果但Parallel.ForEach没有产生。
为什么我的代码不是线程安全的?