C# 事件(2)
来源:互联网 发布:国外的社交软件 编辑:程序博客网 时间:2024/06/08 13:38
下边Demo如果是在vs2012 下运行需要进入调试模式,并且用合理的速度调试一遍才能正常运行出结果。
namespace ConsoleApplication2{ public delegate void MessageHanlder(Connection source, MessageArrivedEventArgs e); public class Connection { public event MessageHanlder MessageArried; private Timer pollTimer; public string name { get; set; } public Connection() { pollTimer = new Timer(700); pollTimer.Elapsed += new ElapsedEventHandler(CheckForMsg); } public void Connect() { pollTimer.Start(); } public void DisConnect() { pollTimer.Stop(); } private static Random random = new Random(); void CheckForMsg(object sources, ElapsedEventArgs e) { Console.WriteLine("Checking for new messages"); if ((random.Next(9) == 0) && (MessageArried != null))//使用了委托语法,但语法略有不同,其含义为“事件是否有订阅者?”如果没有订阅者,MessageArrived就是null,也就不会引发事件。 { MessageArried(this, new MessageArrivedEventArgs("Hello Mum!")); } } } class Display { public void DisplayMsg(Connection source, MessageArrivedEventArgs e) { Console.WriteLine("message arrived from:{0}", source.name); Console.WriteLine("message Text:{0}", e.Message); } } class Program { static void Main(string[] args) { Connection conn1 = new Connection(); conn1.name = "First conneciton"; Connection conn2 = new Connection(); conn2.name = "second connection"; Display display = new Display(); conn1.MessageArried += new MessageHanlder(display.DisplayMsg);//注册事件 conn2.MessageArried += delegate(Connection source, MessageArrivedEventArgs e)//匿名方式注册事件 { Console.WriteLine("dddddddddd message arrived from:{0}", source.name); Console.WriteLine("dddddddddd message Text:{0}", e.Message); }; conn2.Connect(); conn1.Connect(); Console.ReadKey(); } } public class MessageArrivedEventArgs : EventArgs { private string message; public string Message { get { return message; } } public MessageArrivedEventArgs() { message = "No message sent"; } public MessageArrivedEventArgs(string newmsge) { message = newmsge; } }}
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- C# 事件(2)
- C# 中的委托和事件(2)
- C#中的委托和事件(2)
- C#中的委托和事件(2)
- c#事件(2)
- c# 事件用法2
- c# 事件 (1)
- C# 事件(Event)
- C# 事件(Event)
- C#事件(Event)
- C# 事件(Event)
- 经验总结37--C#事件2
- c#事件(2)之相关内容
- 事件(C# 编程指南)
- C#学习笔记(事件)
- C# 回车(键盘)事件
- 事件(C# 编程指南)
- c#自定义事件(转)
- LLVM 源码分析 (二)ModulePass 类
- 关于字符串String
- Linux tcpdump命令
- 使用Aspose.Pdf在PDF文档中添加书签
- linux下查看硬件资源的几个常用命令
- C# 事件(2)
- AE导出图片并插入到word文档中某一固定位置
- 编译Linux内核
- ActiveMQ
- ThreadPoolExecutor使用介绍(转载)
- 一封写给自己的信
- Sql中的for xml用法
- Perl 与 Python 之间的一些异同
- 《小波变换和motion信号处理》系列的第一篇