これは私だけが書いて使っている小さなプログラムです。
ここで、この問題の原因となったハッシュセットを使用するすべての領域のコードを記述します
これがどのように可能かわかりません。この項目は 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 アプリケーションです