比如要在另一个线程中改UI控件属性要用到委托,委托指向改控件属性的方法都写在FORM1中设委托变量叫做weituobianliang 它指向的方法是
changecolor()
{
   button1.backcolor=color.red;
}                      
我的问题来了一.直接调用委托变量 this.weituobianliang;
二.用invoke方法,委托变量当参数 例如 button1.Invoke(weituobianliang);两种调用都能达到效果,这两种方法有什么区别呢?

解决方案 »

  1.   

    一个是非创建线程操作ui
    一个是创建ui的线程操作ui
      

  2.   

    感谢您的回帖!那是不是说比如我在FORM2线程中要改FORM1控件属性就不能用INVOKE方法了?
      

  3.   

    如果都正确,那么当然用第一种。如果第一种有bug,那么可以考虑第二种。呵呵!
      

  4.   

    我刚发现,第一种方法给委托变量设置指向事件时用的是“+=”但第二种INVOKE直接用“=”,是不是第一种调用委托变量时可以关联很多事件,但用INVOKE只能指向一个事件呢,呵呵
      

  5.   

    一般有一个判断函数,判断当前线程是不是创建ui的线程如果是,那就直接操作,不用invoke。如果不是,那就用invoke来操作