使用Thread.Sleep()方法时遇到了一个麻烦的问题,求解!
研究Thread.Sleep()时遇到的一个怪问题,恳请大家解答。
今天研究了好久System.Threading.Thread.Sleep()这个方法,我以为和Win32api里面的Sleep()函数一样,但是用的时候出问题了。
窗体设计如图,加了一个label1控件和一个button1控件。
在button1的click事件里面加了如下代码:
{
label1.Text = "0";
Thread.Sleep(1000);
}
预想的结果应该是在click事件发生后立即使Text变成“0”,然后进程挂起1秒钟,但是结果却不是。
click事件发生后程序运行图如下:
1秒钟后Text终于变成0了:
感觉给Text赋值的语句的运行状态就是,Sleep之前,先分配好空间,"Sleep"1秒后,程序才真正的进行赋值。有什么办法能够让Text的赋值语句即时生效吗?我有试过
1: label1.Text = "0";
Thread.Sleep(1);
Thread.Sleep(1000);
2: label1.Text = "0";
label1.Text = "0";
Thread.Sleep(1000);
但无论我怎么改结果也一样,还请大家帮我解答。
------解决方案--------------------
加上
C# code
this.label1.Refresh();