C#中开定时器并同时处理其他任务

2024-11-10 01:12:13
推荐回答(1个)
回答1:

肯定会卡住呀,因为你相当开了一个线程,调一个方法,而这个方法里面有一个循环,每次都会卡100,Sleep是挂起呀,把当前这个线程挂起,简单的说,你这个线程会一直挂到循环结束,其他的线程才动。

public void sumtime()           //将计数显示在label中。
{
    for (int j = 0; j < 100000; j++)
    {
        i++;
        //Thread.Sleep(100);
        sumlab.Text = i.ToString();
        int start = Environment.TickCount;
        while (Math.Abs(Environment.TickCount - start) < 1000)
        {
            Application.DoEvents(); //消息可以继续用。
        }
    }
}

建立不要直接在循环中挂Sleep,除非有必要,这样会造成循环语句阻塞,多线程最怕这个。你如果非要搞两个线程,最好开两个Timer。