日期:2014-05-17  浏览次数:20761 次

读别人代码发现通过control.invoke来调用方法
 _logonForm.Invoke(new Action<string>(_logonForm.SetErrorMessage), "正在连接读卡器");


_logonForm.SetErrorMessage("正在连接读卡器")

的区别是什么?好像不是异步的,而且invoke返回Object,还多一步拆箱装箱呢。

下面是invoke方法的注释:
   //
        // 摘要:
        //     在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托。
        //
        // 参数:
        //   method:
        //     一个方法委托,它采用的参数的数量和类型与 args 参数中所包含的相同。
        //
        //   args:
        //     作为指定方法的参数传递的对象数组。如果此方法没有参数,该参数可以是 null。
        //
        // 返回结果:
        //     System.Object,它包含正被调用的委托返回值;如果该委托没有返回值,则为 null。
        public object Invoke(Delegate method, params object[] args);

------解决方案--------------------
跨线程访问用的。
------解决方案--------------------
Invoke与BeginInvoke