本文重要引见了C#中的托付、事宜与异步的相干学问。具有很好的参考价值。下面随着小编一起来看下吧
从刚打仗c#编程到现在,差不多快有一年的时候了。在进修过程当中,有许多处所一直貌同实异,直到近来才弄邃晓。
本文将先引见用法,后评议功用。
一、托付
基础用法:
1.声明一个托付范例。托付就像是‘类'一样,声清楚明了一种托付以后就能够建立多个具有此种特性的托付。(特性,指的是返回值、参数范例)
public delegate void SomeKindOfDelegate(string result);
2.建立一个在1中建立的托付范例的托付。
public SomeKindOfDelegate aDelegate;
3.为2中建立的细致的托付增加响应函数。响应函数必需相符1中的‘特性'。
aDelegate +=new SomeKindOfDelegate(aFunctionThatJustForDelegate); private void aFunctionThatJustForDelegate(string result) { MessageBox.Show(result); }
4.完成以上三步以后,就能够运用Invoke来对托付举行挪用了。Invoke能够挑选挪用的目的函数,挪用优先级,以及挪用的参数。
aDelegate.BeginInvoke("Hello~I'm being invoked!", null, null);
上面是基础用法,除了这类基础用法以外,还能够连系var、匿名托付、lambda托付等要领。
完全代码:
namespace wtfIsDelegate { public delegate void SomeKindOfDelegate(string result); public partial class Form1 : Form { public event SomeKindOfDelegate aDelegate; public Form1() { InitializeComponent(); aDelegate +=new SomeKindOfDelegate(aFunctionThatJustForDelegate); aDelegate.BeginInvoke("Hello~I'm being invoked!", null, null); } private void btnDelegate_Click(object sender, EventArgs e) { } private void aFunctionThatJustForDelegate(string result) { MessageBox.Show(result); } } }
托付的用途:
托付的长处,是能够完成异步(BeginInvoke),还能够在某种须要同时挪用多个同参数、返回值的情况下简化代码。
二、事宜
基础用法:
1.定义托付。
public delegate void SomeKindOfDelegate(string result);
2.定义事宜。
public event SomeKindOfDelegate aDelegate;
3.为事宜增加响应函数。
process.Exited += new EventHandler(CmdProcess_Exited);
4.为事宜划定触发(挪用)体式格局。(【也能够没有触发体式格局,直接invoke】)
说明注解:
C#里,每一种‘事宜Event'也许都对应着其‘事宜处置惩罚者EventHandler'。比方Process类的OutputDataReceived事宜对应着DataReceivedEventHandler,关于非特异性的‘事宜',比方PasswordChanged 这类,它们一致都对应着RoutedEventHandler或许EventHandler这类较为通用的‘事宜处置惩罚者'。但是,‘EventHandler'也只是充当了一个中介的角色,真正触发了‘Event'以后要做什么,还须要我们手动指定,像如许:
process.Exited += new EventHandler(CmdProcess_Exited); // 注册历程完毕事宜 。
EventHandler原本也是托付。比方
public delegate void DataReceivedEventHandler(object sender, DataReceivedEventArgs e);
自定义事宜
自定义事宜是一种相似于托付的体式格局,
自定义事宜某种意义上改变了顺序的流程,使得某个前提的变化由‘不停查询'转变为‘定阅与处置惩罚'的关联。
自定义事宜须要有以下几个元素:
事宜的提议者,事宜的定阅,以及事宜的处置惩罚顺序。从提议者到处置惩罚顺序之间是能够传参数的。
一个事宜的‘提议'能够依赖于某种体系音讯,比方‘OnKeyDown'、‘OnMouseClick'(【我现在还没见过这么写的源码】),也能够在某个前提杀青时(比方两次输入了一样的字符)自行挪用(实在收到体系音讯也算是‘前提杀青')。【更多的event是这么写出来的】
有些事宜,并没有显著的‘提议者'。
托付和事宜是啥关联
托付和自定义事宜的运用体式格局非常非常相似。event 只要类的内部能够 Invoke,delegate的话,在哪都能够Invoke。挪用的体式格局貌似也略有区分(传参体式格局)
因为挪用体式格局和传参的差别,event显得更保守/稳固一些。event也更轻易从‘明白'上更轻易接受。
delegate貌似更多的用于举行异步(begin invoke)。而event则更多的用来做自定义事宜。
托付和异步是啥关联
异步是托付能够完成的一种功用(或许叫做‘征象'也能够) 异步能够由许多种其他体式格局表现,比方多线程(thread,threadpool,task等等)。
以上就是简朴引见C#中的托付,事宜与异步的用法的细致内容,更多请关注ki4网别的相干文章!
下一篇:企业官网可以用帝国cms吗【CMS教程】,帝国cms
支付宝扫一扫打赏
微信扫一扫打赏
共 0 条评论关于"简朴引见C#中的托付,事宜与异步的用法【C#.Net教程】,C#,委托,事件,异步"
最新评论