スレッドで特定のパラメーターを使用してメソッドを実行する必要があります。実行すると、パラメーターが間違っていることに気付きました。int[] output
この例では、1 ~ 7 の数字の配列があります。番号ごとに、メソッドでスレッドを作成しますWriteInt(i)
。出力は任意の順序で 1 ~ 7 になると予想していますが、一部の数字が欠落しており、他の数字が重複していることが一貫して見られます。これらのスレッドを開始する正しい方法は何ですか?
(リストは後でスレッドに参加するためだけに存在します)
class Program
{
static void Main(string[] args)
{
int[] output = { 1, 2, 3, 4, 5, 6, 7 };
List<Thread> runningThreads = new List<Thread>();
foreach (int i in output)
{
Thread thread = new Thread(() => WriteInt(i));
thread.Start();
runningThreads.Add(thread);
}
foreach(Thread t in runningThreads)
{
t.Join();
}
}
private static void WriteInt(int i)
{
Console.WriteLine(i);
}
}
出力例:
3
3
4
5
6
7