我有一个WinForm窗口,上面创建了一个Progress的控件,我现在想在WinForm的工程中创建一个Timer,然后定时更改Progress的进度,但是运行的时候程序报错,代码如下
  private void SetTimer()
        {
            eventTimer = new System.Timers.Timer();
            eventTimer.Interval = 2000;
            eventTimer.AutoReset = true;
            eventTimer.Enabled = true;
            eventTimer.Elapsed += new ElapsedEventHandler(TimerEvent);
            eventTimer.Start();
        }        private void TimerEvent(object sender, EventArgs e)
        {
            progressBar.Value = 自定义的一个数; //每次运行到这个地方的时候报错,progressBar是我WinForm程序的一个控件
        }请问这是什么原因引起的,该如何解决?

解决方案 »

  1.   


    ElapsedEventHandler本身就是委托,请问楼上所说的委托实现该如何做,能否给出示例,谢谢!
      

  2.   

     private void TimerEvent(object sender, EventArgs e) 
            {
                this.Invoke((MethodInvoker)delegate
                {
                    progressBar1.Value = 10;
                });
               
            }
      

  3.   

    delegate void AA(); 
    //以上写在您的Public Class Form1 下一行
            this.BeginInvoke(new AA(AdressOf(SetValue)));
    //以上替换您的IimerEvent事件内容private void SetValue() 
        { 
          progressBar.Value = 自定义的一个数;  
        } 
      

  4.   


    问题已解决,谢谢~~~
    但是对this.Invoke((MethodInvoker)delegate的含义不能理解,不知能否解释下,或者能否说明下哪里有相应的资料,想学习这部分的内容.