1

我有一个线程数组,我想同时/并行运行,但我得到“ NullReferenceException

var t = new Thread[6];
t[0] = new Thread(() => DoSomething0());
t[1] = new Thread(() => DoSomething1());
t[2] = new Thread(() => DoSomething2());
t[3] = new Thread(() => DoSomething3());
t[4] = new Thread(() => DoSomething4());
t[5] = new Thread(() => DoSomething5());
Parallel.ForEach(t, item => item.Start());

它给出了错误,Parrallel.Foreach因为项目是null但我做错了什么?

4

3 回答 3

1

您为六个项目创建了一个数组,但您只为前五个项目分配了值。最后一项为空,因此当您尝试使用数组中的所有项时会收到空引用错误。

于 2013-01-28T17:55:21.140 回答
1

您定义了 6 个元素,但只分配了 5 个元素,null现在是最后一个元素。

这就是为什么NullReferanceException当你尝试使用所有这些时你会得到。

也初始化第 6 个元素。

t[0] = new Thread(() => DoSomething0());
t[1] = new Thread(() => DoSomething1());
t[2] = new Thread(() => DoSomething2());
t[3] = new Thread(() => DoSomething3());
t[4] = new Thread(() => DoSomething4());
t[5] = new Thread(() => DoSomething5());
于 2013-01-28T17:56:41.177 回答
1

您有一个使用 6 个插槽(全部为 initial)实例化的数组null,并且您只实例化前 5 个插槽,留下第 6 个null。这将是您的空项目。

于 2013-01-28T17:56:42.707 回答