我需要在线程中运行具有给定参数的方法。我注意到当我运行它时,参数是错误的。对于给出的示例,我有一个数字为 1-7 的数组int[] output
。对于每个数字,我使用方法创建一个线程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