私はc#とマルチスレッドに少し慣れていないので、ここでばかげた間違いをしているかもしれませんが、これを理解できないようです。ネットワーク上で検出されたマシンの数に基づいてスレッドの配列を作成するアプリケーションがあり、マシンごとに、作成した関数を実行するスレッドを作成します。forループを終了した後、別の関数を実行する別のスレッドを作成します。私の関数は完全に正常に動作し、問題はありません。問題は、forループを終了して次のスレッドの作成に進んだ後、何らかの理由でアプリケーションがforループに戻り、インデックスが範囲外になり、スローされる例外。これを明確に説明しているといいのですが、forループが終了すると、コード行が実行されて元に戻る理由がわからないため、なぜこれが発生するのか困惑しています。
smThread = new Thread[networkedComputers.Count];
for (UInt16 i = 0; i < networkedComputers.Count; i++)
{
smThread[i] = new Thread(delegate() { sm.RunServerMonitorPerMachine(networkedComputers[i].ToString()); });
smThread[i].Start();
}
dailyThread = new Thread(dailyEvents);
dailyThread.Start();