Race condition during thread start?

Posted by user296353 on Stack Overflow See other posts from Stack Overflow or by user296353
Published on 2010-03-18T09:26:28Z Indexed on 2010/03/18 9:31 UTC
Read the original article Hit count: 460

Filed under:
|
|
|
|

Hi,

I'm running the following code to start my threads, but they don't start as intended. For some reason, some of the threads start with the same objects (and some don't even start). If I try to debug, they start just fine (extra delay added by me clicking F10 to step through the code).

These are the functions in my forms app:

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();
    });
}

Anyone able to help me out?

Cheers!

© Stack Overflow or respective owner

Related posts about threads

Related posts about racing