C#Winforms System.Threading.Timer

时间:2014-03-08 16:12:33

标签: c# multithreading winforms timer

我在使用多种窗口形式的代码时遇到问题:

  private void Window_Load(object sender, EventArgs e)
  {   
     new System.Threading.Timer((state) => 
     { 
         BeginInvoke((Action)delegate() 
         {
             if (!CurrentTimeDate.IsHandleCreated) return;
             CurrentTimeDate.Text = "    " +    DateTime.Now.ToString("hh:mm:ss") + "  " + DateTime.Now.ToShortDateString(); 
         }); 

     }, null, 0, 1000);
  }

当我在第一次点击时显示表单时,它运行良好,然后我按下窗口表单的关闭按钮。我再次单击按钮再次显示该表单,然后显示此错误:

  

InvalidOperationException:无法在a上调用Invoke或BeginInvoke   控制直到窗口句柄被创建

编辑:我认为它已经解决但代码仍显示错误

1 个答案:

答案 0 :(得分:3)

我认为这是在你的表格关闭后继续运行的计时器。 尝试保存计时器的实例,并在Form_Closing事件中调用timer.Dispose()