日期:2014-05-18  浏览次数:20811 次

使用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();