首页 > Windows开发 > 详细

C#回调实现的一般过程

时间:2015-12-26 09:54:42      阅读:318      评论:0      收藏:0      [点我收藏+]

C#回调实现的一般过程

C#的方法回调机制,是建立在委托基础之上的,下面给出它的典型实现过程。

(一) 定义、声明回调

Delegate void DoSomeCallBack(type para);

DoSomeCallBack doSomeCallBack;

可以看出,这里定义声明的“回调”(doSomeCallBack)其实就是一个委托。

(二) 初始化回调方法

doSomeCallBack=new DoSomeCallBack(DoSomeMethod);

所谓“初始化回调方法”实际上就是实例化刚刚定义了的委托,这里作为参数的DoSomeMethod称为“回调方法”,它封装了对另一个线程中目标对象(窗体控件或其它类)的操作代码。

(三) 触发对象动作

Opt obj.Invoke(doSomeCallBack,arg);

其中,Opt obj为目标操作对象,在此假设他是某控件,故调用其Invoke方法。Invoke方法的签名为:

  • object Control. Invoke(Delegate Method,params  object[] args)

它的第一个参数为委托类型,可见“触发对象动作”的本质就是把委托doSomeCallBack作为参数传递给控件的Invoke方法,这与委托的使用方式是一模一样的。

最终作用于对象Opt obj的代码是置于回调方法体DoSomeMethod()中的,如下所示:

private void DoSomeMethod(type para)

{

            Opt obj. someMethod(para);

}

如果不用回调,而是直接在程序中用“Opt obj. someMethod(para);”则当对象Opt obj不在本线程(夸线程访问)时就会发生如下所提示的错误:“Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException”类型的异常或“System.InvalidOperationException;线程间操作无效,从不是创建控件**的线程访问它。”

 

C#回调实现的一般过程

原文:http://www.cnblogs.com/rainbow70626/p/5077533.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!