///定时器用来定时刷新
public System.Timers.Timer RWIOTimer = new System.Timers.Timer();
public int i=0;
        public void initRWIOTimer()
        {
            RWIOTimer.Elapsed += new System.Timers.ElapsedEventHandler(RWIOTimer_Elapsed);
            RWIOTimer.Interval = 2000;
            RWIOTimer.AutoReset = true;        }        /// 定时器事件
        private void RWIOTimer_Elapsed(object sender,   System.Timers.ElapsedEventArgs e)
        {
            i+=1;
            label1.text=i.tostring();        }
         private void Form1_Load(object sender, EventArgs e)
        {
            RWIOTimer.Enabled = true;
            initRWIOTimer();
        }
我想让label每隔2秒钟刷新一次数据,可是提示错误:用户代码未处理,线程间操作无效,从不是创建控件label1的线程访问它。
好像要用到委托,但对委托不了解,看了相关委托的介绍,看得一头雾水,有哪位知道这样的问题该怎么处理???
很着急,赶紧帮帮忙!

解决方案 »

  1.   

    private delegate void UpdateText(int i);private void OnUpdateText(int i)
    {
        if(this.InvokeRequired)
        {
            UpdateText dele = new UpdateText(this.OnUpdateText);
            this.Invoke(dele, new object[]{i});
        }
        else
            label1.text=i.tostring();
      
    }
      

  2.   

    for example:private System.Timers.Timer myTimer;
            private int count;        public delegate void MyInvoke(string str);
            public Form1()
            {
                InitializeComponent();
                count = 0;
                myTimer = new System.Timers.Timer();
                myTimer.Interval = 2000;
                myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed);
                myTimer.Enabled = true;
            }        private void UpdateUI(string str)
            {
                this.label1.Text = str;
            }        void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                //显示Lable
                MyInvoke mi = new MyInvoke(this.UpdateUI);
                this.BeginInvoke(mi, new object[] { count.ToString() });
                count++;
            }
      

  3.   

    呵呵,好使了,多谢liujia_0421(SnowLover)