次のコードを実行してスレッドを開始していますが、意図したとおりに開始しません。何らかの理由で、一部のスレッドは同じオブジェクトで開始されます (また、一部のスレッドは開始すらしません)。デバッグしようとすると、問題なく開始されます (コードをステップ実行するために F10 をクリックすると、遅延が追加されます)。
これらは私のフォームアプリの機能です:
private void startWorkerThreads()
{
int numThreads = config.getAllItems().Count;
int i = 0;
foreach (ConfigurationItem tmpItem in config.getAllItems())
{
i++;
var t = new Thread(() => WorkerThread(tmpItem, i));
t.Start();
//return t;
}
}
private void WorkerThread(ConfigurationItem cfgItem, int mul)
{
for (int i = 0; i < 100; i++)
{
Thread.Sleep(10*mul);
}
this.Invoke((ThreadStart)delegate()
{
this.textBox1.Text += "Thread " + cfgItem.name + " Complete!\r\n";
this.textBox1.SelectionStart = textBox1.Text.Length;
this.textBox1.ScrollToCaret();
});
}
誰でも私を助けることができますか?