私はマルチスレッドプログラムに取り組んでおり、すべてのスレッドがすべて終了したことを確認したいので、グローバルがList<bool> tr
あり、新しいスレッドを作成するときにfalse
それに追加し、スレッドの最後にtrue
現在のインデックスを渡して作成しますスレッドへのリスト内のスレッドのブール値。
これは、トレッドを開始するループです。
for (int i = 0; i < t; i++)
{
int n = int.Parse(r.ReadLine());
List<int> nums = (from s in r.ReadLine().Split(' ') select int.Parse(s)).ToList();
tr.Add(false);
new Thread(() => Process(nums, i)).Start();
}
これはProcess
方法です:
public static void Process(List<int> Data, int tNum)
{
output.Add(ProcessSums(ProcessSubs(Data)).Distinct().Count());
tr[tNum] = true;
}
問題はスレッドの1つにあり、tr[tNum] = true;
何を実行するかがスローさArgumentOutOfRangeException
れて言われますIndex was out of range.
が、の長さはtr
is97
とindex
is95
です。何が問題なのかわかりませんが、本当に助けが必要です。誰か助けてもらえますか?!?