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

6つのアイテムの配列を作成しますが、最初の5つにのみ値を割り当てます。最後の項目はnullであるため、配列内のすべての項目を使用しようとすると、null参照エラーが発生します。

于 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つのスロット(すべて最初はnull)でインスタンス化された配列があり、最初の5つのスロットのみをインスタンス化し、6番目を残しますnull。これはあなたのヌルアイテムになります。

于 2013-01-28T17:56:42.707 に答える