c# Task(スレッド)を生成する際に引数に変数を使うときは注意

for(int i ; i  TestTask(object[i]));
} 

上記のように、引数に変数(この場合はi)を使用する場合には注意が必要です。
タスク(スレッド)の実行時にこのiは評価されるからです。

forループの後にTestTaskが実行されると、object(10)が引数になってしまいます。
もちろん想定外の結果になります。

ojbejct型を渡すコンストラクターを使用すればよいようです。
コンストラクターが呼び出される時に評価されるからのようですが、
実際にどうやって書けばいいかわかりません。後日追記予定。

とりあえず、定数を書いて対応しています・・・

タイトルとURLをコピーしました