苏飞论坛
标题: C#培训课程-番外篇之C#委托 [打印本页]
作者: ro4ters 时间: 2014-10-27 23:55
标题: C#培训课程-番外篇之C#委托
番外篇 之 C#委托
玄机网番外篇之C#委托,
很多朋友在学习C#时,总会遇到多线程和委托的概念,
不是对其理解的不是很透彻,要不就是几乎只会用,根本不知道它是干嘛的.
本视频教程重点为大家详细的讲解C#委托的使用.
一、委托是啥?
a) 委托,委派一个人托付一件事。
b) 是委托一个变量,一个方法(一件事)
c) 将方法当做参数传递
二、为什么要有委托?
a) 房屋中介.
三、委托能干嘛?
四、为什么委托和指针一样?
a) 委托和C++中的指针一样.
i. 指针是指向内存地址.
ii. 委托”指向”方法的内存地址.
五、委托的应用场景?
a) 在类中我需要传递给窗体一个信息.但是不想让这个信息以返回值的形式返回.
i. 常规情况使用委托场景:
1. 多线程中解决由” 线程间操作无效: 从不是创建控件“xxx”的线程访问它。”
2. 异步模式.
ii.
六、多播委托
额外知识 this 关键字
标识当前活动的对象.如果在窗体中,那么可以表示当前的Form
如果在事件中,表示当前激活事件的宿主.
Base关键字
当前对象的父对象.
委托的语法:
权限修饰符 委托关键字 委托返回值 委托名( [参数] )
public delegate void GetInfo();//声明委托
权限修饰符 委托 变量名
public GetInfo getInfo; //声明委托变量
直接和方法调用一样.传递变量即可.
getInfo(str);//委托的第一种使用方式
问题一:为什么使用委托以后,还会出现跨线程访问的错误.
误区:委托仅仅是将方法当做参数传递,“并不是用来执行或者解决一些特殊的问题,比如说跨线程异常”。
委托变量申明的传递。正确。
this.Invoke(); 推荐使用
原因:由于我的控件是”我”(Form1)创建的,那么最好还是由我来调用/销毁
在创建控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托 微软官方翻译
从创建控件的线程上,用指定的参数列表执行指定委托 君临翻译
Base.Invoke(); 越俎代庖.
在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托。微软官方翻译
从拥有控件的线程上,用指定的参数列表执行指定委托
多播委托又被称之为”委托链”
多播委托其实就是一个委托接一个委托……
执行所有给他注册的方法.
+= 增加一个委托方法
-= 去除一个委托方法.
玄机网 C#委托详解
视频下载地址 http://pan.baidu.com/s/1gdAFesb
作者: 我是MT 时间: 2014-10-28 01:28
君临的东西还搞到这里来了啊。雅蠛蝶。 呵呵。
作者: ro4ters 时间: 2014-10-28 09:57
我只是分享我自己出的视频..我就是君临.!
作者: ching126 时间: 2014-10-28 14:11
我只是路过打酱油的。
作者: shamoyu 时间: 2016-3-15 21:52
强烈支持楼主ing……高手无处不在。
作者: h6435749 时间: 2019-6-2 17:22
链接失效了,能否再分享一次
欢迎光临 苏飞论坛 (http://www.sufeinet.com/) |
Powered by Discuz! X3.4 |