none
while与界面元素change周期 RRS feed

  • 问题

  • 目的: 事先把一个label改成绿色,然后延时5秒要求绿色保持5秒后让label变成红色, 两个变化在一个函数里.

    问题: 在延时5秒前的那个绿色在winform上的label不会变成绿色,而是等到5秒延时后直接变成红色.

    源代码:

    if (BackCheck())
                {
                    this.labelStateDis.Text = "PASS!";
                    this.labelStateDis.BackColor = System.Drawing.Color.Green;
                    DateTime time = DateTime.Now;
                    while ((DateTime.Now - time) < TimeSpan.FromSeconds(5))
                    {

                    }
                    PortAccess.Output(888, 0);
                    this.labelStateDis.Text = "LOCKED";
                    this.labelStateDis.BackColor = System.Drawing.Color.Red;
                }


    :)Ex
    2010年10月13日 3:18

答案

  •  

     this.labelStateDis.Text = "PASS!";
          this.labelStateDis.BackColor = System.Drawing.Color.Green;
          DateTime time = DateTime.Now;
          Application.DoEvents();//加入此行代码
          while ((DateTime.Now - time) < TimeSpan.FromSeconds(5))
          {
    
          }
          // System.Threading.Thread.Sleep(5000);也可以把间隔5秒换成线程休眠5秒
          this.labelStateDis.Text = "LOCKED";
          this.labelStateDis.BackColor = System.Drawing.Color.Red;
    

    http://blog.csdn.net/zx13525079024
    • 已标记为答案 Ex.Shen 2010年10月13日 5:32
    2010年10月13日 3:38