博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#回调实现的一般过程
阅读量:6416 次
发布时间:2019-06-23

本文共 900 字,大约阅读时间需要 3 分钟。

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;线程间操作无效,从不是创建控件**的线程访问它。”

 

转载地址:http://wnpra.baihongyu.com/

你可能感兴趣的文章
分布式事务处理方案
查看>>
Tomcat中设置限制ip或主机名访问
查看>>
学习Bootstrap知识记录点②
查看>>
云计算服务在小企业中的作用?
查看>>
CentOS配置本地yum源/阿里云yum源/163yuan源,并配置yum源的优先级
查看>>
10种JavaScript开发者必备的VS Code插件
查看>>
JavaScript是如何工作的: Web推送通知的机制
查看>>
Java中的字符串常量池
查看>>
案例实战:LightningChart集成Dynamotive汽车遥测软件|见证真正无与伦比的性能
查看>>
HTTP Request Method
查看>>
使用eclipse mybatis generator插件在maven 项目中自动构建代码以及遇到的一些坑
查看>>
设计师都是美工?NO!网页设计 VS. 平面设计有区别!
查看>>
“手把手教你设计”—12个最佳手机APP界面设计教程
查看>>
前端项目的总结——css in js 的好处?
查看>>
(九)整合spring cloud云服务架构 - HongHu commonservice-eureka 项目构建过程
查看>>
Linux下二进制文件的分割与合并
查看>>
知识点018-IP,PV,UV的区别
查看>>
阿里云飞天技术汇之“阿里云在线直播技术与应用分享”主题沙龙
查看>>
WEB Struts2 构建struts2框架
查看>>
javascript Date format(js日期格式化)
查看>>