C# 事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# 事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2552字,纯文字阅读大概需要4分钟。
内容图文
事件和委托极为的相似。其实,事件就好像被简化的针对特殊用途的委托。
1,发布者定义时间成员。
2,订阅者注册在事件成员被触发时要调用的方法。
3,当发布者触发事件时,所有列表注册的事件都将被调用。
下面我们来看一个简单的例子:
EventHandler是.Net BCL使用预定义的用于标准时间的委托,
public delegate void EventHandler(object sender,EventArgs e)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace EventHandlerTest { class Program { // 委托 public delegate void EventHandler(string a); //事件publicstaticevent EventHandler SetCode; staticvoid Main(string[] args) { //注册 Program.SetCode += GetCode; //触发if (SetCode != null) //检查是否有事件注册 { SetCode("触发"); } //取消 Program.SetCode -= GetCode; Console.ReadLine(); } publicstaticvoid GetCode(string s) { Console.WriteLine(s); } } }
我们来看另外一个例子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace TestEvent1 { public class MyTimeClass { public event EventHandler Elapsed; //声明事件 public void OnOneSecond(object source, EventArgs args) { if (Elapsed != null) { Elapsed(source,args); } } private System.Timers.Timer MyPrivateTimer;//私有计时器
public MyTimeClass() { MyPrivateTimer = new System.Timers.Timer(); //创建私有计时器 MyPrivateTimer.Elapsed += OnOneSecond; //附加事件处理程序 MyPrivateTimer.Interval = 1000; MyPrivateTimer.Enabled = true; } } class classA { public void TimerHandlerA(object source, EventArgs args) { Console.WriteLine("****************************"); Console.WriteLine("ClassA EventHandler called"); } } class classB { public static void TimerHandlerB(object source, EventArgs args) { Console.WriteLine("ClassB EventHandler called"); Console.WriteLine("****************************"); } } class Program { static void Main(string[] args) { classA ca = new classA(); MyTimeClass mtc = new MyTimeClass(); mtc.Elapsed += ca.TimerHandlerA; mtc.Elapsed += classB.TimerHandlerB; Thread.Sleep(2000); Random random = new Random(); while (true) { int tmp = random.Next(1,3); switch (tmp) { case 1: mtc.Elapsed -= ca.TimerHandlerA; Console.WriteLine("ClassA Handler Cancled"); mtc.Elapsed += ca.TimerHandlerA; break; case 2: mtc.Elapsed -= classB.TimerHandlerB; Console.WriteLine("ClassB Handler Cancled"); mtc.Elapsed += classB.TimerHandlerB; break; default: break; } Thread.Sleep(2000); } } } }
运行结果:
PS:事件驱动的创建
private System.Timers.Timer MyPrivateTimer; //声明私有计时器变量
MyPrivateTimer = new System.Timers.Timer(); //创建私有计时器 MyPrivateTimer.Elapsed += OnOneSecond; //附加事件处理程序 MyPrivateTimer.Interval = 1000; //设置事件间隔 MyPrivateTimer.Enabled = true; //启用
原文:http://www.cnblogs.com/wuzhang/p/wuzhang20150815.html
内容总结
以上是互联网集市为您收集整理的C# 事件全部内容,希望文章能够帮你解决C# 事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。