您好我正在尝试在线程lambda方法内传递循环的当前索引并打印它。该方法将仅显示索引的最后一个值。class Program { public static EventWaitHandle handle = new EventWaitHandle(false, EventResetMode.AutoReset); public static EventWaitHandle autohandle = new EventWaitHandle(false, EventResetMode.AutoReset); static readonly int ThreadNum=3; static void Main(string[] args) { object lk = new object(); new Thread(() => { while (true) { var key = Console.ReadKey(); if(key.Key==ConsoleKey.A) { handle.Set(); } else { handle.Reset(); } Thread.Sleep(3000); } }).Start(); for(int i=0;i<ThreadNum;i++) { new Thread(() => { int val = i; Console.WriteLine($"Thread:{val} created"); while (true) { handle.WaitOne(); Console.WriteLine($"From thread:{val}"); Thread.Sleep(1000); } }).Start(); } Console.WriteLine("Hello World!"); } }有人可以向我解释为什么我只得到索引的最后一个值。我理解索引被阻塞了(创建了一个复制索引值的类),但是当第一次迭代进入线程方法时,它应该阻塞i = 0并保持这种方式。
1 回答
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消