我正在运行以下代码来启动我的线程,但它们没有按预期启动。由于某些原因,一些线程使用相同的对象启动(有些甚至根本不启动)。如果我尝试调试,它们可以正常启动(我通过单击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();
});
}
有人能帮我吗?