我对多线程编程不太满意,当我试图在我的代码中实现它时,遇到了一个我无法弄清楚原因的异常。对此的任何帮助将不胜感激:)
所以,基本上我有这个小代码片段:
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#。
谢谢