肯定会卡住呀,因为你相当开了一个线程,调一个方法,而这个方法里面有一个循环,每次都会卡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。