这是一个只有我在编写和使用的小程序。
现在我将编写所有使用导致此问题的哈希集的区域的代码
我不明白这怎么可能。此项目仅在 MainWindow 中使用
hsProxyList 是一个哈希集
HashSet<string> hsProxyList = new HashSet<string>();
错误发生在以下迭代中
lock (hsProxyList)
{
int irRandomProxyNumber = GenerateRandomValue.GenerateRandomValueMin(hsProxyList.Count, 0);
int irLocalCounter = 0;
foreach (var vrProxy in hsProxyList)
{
if (irLocalCounter == irRandomProxyNumber)
{
srSelectedProxy = vrProxy;
break;
}
irLocalCounter++;
}
}
}
我使用 hsProxyList 的其他地方
当我得到它的计数时,我没有锁定对象 - 我想这不会导致任何错误但可能不正确 - 不是致命的重要
lblProxyCount.Content = "remaining proxy count: " + hsProxyList.Count;
新的
lock (hsProxyList)
{
hsProxyList.Remove(srSelectedProxy);
}
新的
lock (hsProxyList)
{
hsProxyList = new HashSet<string>();
foreach (var vrLine in File.ReadLines(cmbBoxSelectProxy.SelectedItem.ToString()))
{
hsProxyList.Add(vrLine);
}
}
可以看出我到处都在使用锁。这是一个多线程软件。所有 hsProxyList 都在 MainWindow.xaml.cs 中使用 - 它是一个 C# WPF 应用程序