私はマルチスレッドプログラミングにあまり慣れていません.コードに実装しようとしているときに、理由がわからない例外が発生しました. これについての助けをいただければ幸いです:)
だから、基本的に私はこの小さなコードスニペットを持っています:
string[][] Array1 = new string[thread_count][];
/* Logic to insert data in Array1 */
Thread[] WorkerThreads = new Thread[thread_count];
for (int i = 0; i < thread_count; i++)
{
/* THE EXCEPTION OCCURS IN THE FOLLOWING LINE */
WorkerThreads[i] = new Thread(() => GetVal(Array1[i], val, num));
WorkerThreads[i].Start();
}
for (int i = 0; i < WorkerThreads.Length; i++)
WorkerThreads[i].Join();
現在、thread_count の値が 10 に設定されており、IndexOutOfRange 例外が発生しています。デバッガーは i の値を 10 として表示し、Array1[10][] はアクセスしようとしているものです。
ループがそこまで実行されない場合、i の値が 10 に達する方法がわかりません。
誰がどこが間違っているのか指摘できますか? 私はC#を使用しています。
ありがとう