关注互联网、IT技术!

C#技术总结:跨线程操作UI控件

  •  admin
  •  2012-01-02 11:01:07
  •     
跨线程操作UI控件,相信大家经常会碰到,对于新手来说,总是会碰到麻烦,不知道如何使用子线程操作UI控件,因为.NET的安全机制,是不允许使用子线程操作UI控件的,只能由主线程操作。 子线程对UI控件的操作,需要通过委托来实现。举一个简单的例子,比如要给一个label控件赋值。 正常操作只需要
        private void OperateUIControls()
        {
            label1.Text = "给label赋值";
        }
如果使用子线程调用此方法,就会抛出异常“线程间操作无效: 从不是创建控件“label1”的线程访问它” 我们只需要使用委托稍作处理,就解决了
        private void OperateUIControls()
        {
            if (label1.InvokeRequired)
            {//判断是否跨线程操作
                //新建一个委托,通过委托实现跨线程操作UI控件,MethodInvoker是.NET自带的委托
                //大家也可以根据需要,自定义自己的委托类型已经需要的参数
                MethodInvoker mi = new MethodInvoker(OperateUIControls);

                this.Invoke(mi);
            }
            else
            {
                label1.Text = "给label赋值";
            }
        }
 

相关文章

评论

称呼(可以不填)
Email(可以不填)
链接(可以不填)
请输入评论内容*