C#事件续

原创 2016年08月31日 11:43:16

对于C#的事件机制我觉得订阅者和发布者非常的形象。
这里写图片描述
这里举一个老湿发布作业的例子。老师有一个发布作业的事件,而学生则需要订阅这个事件,老师一旦发布了作业,学生就要处理作业。这就是所谓的代理,老师动动嘴(抄写新华字典一边),学生就要不停的写,反正老师又不干。
首先需要定义老师这个类

    class Teacher
    {
        //public event EventHandler PublishWorkEvent;//标准的事件定义
        public event Action<object, WorkEventArgs> PublishWorkEvent;//发布作业的事件
        public virtual void PublishEvent(WorkEventArgs e)//触发事件的方法,发布事件
        {
            if(e != null)
            {
                PublishWorkEvent(this,e);//通知所有订阅者,让订阅者处理事件
            }
        }
    }

这里老师布置的作业具体在自定义的事件处理类WorkEventArgs中

    class WorkEventArgs//事件参数类
    {
        public string Works { get; }
        public WorkEventArgs(string works)
        {
            Works = works;
        }
    }

接着定义一个学生类

    class Student
    {
        public void WorkHandler(object sender,WorkEventArgs e)//代理,和老师的发布事件进行关联,老师说学生做
        {
            Console.WriteLine("teacher publish work,student " + e.Works);
        }
    }

接着就是例子了

static void Main(string[] args)
{
   Teacher tr = new Teacher();//事件发布者

   Student st1 = new Student();
   Student st2 = new Student();
   Student st3 = new Student();

   //事件拥有者(发布事件)和事件订阅者(处理事件)建立订阅关系
   tr.PublishWorkEvent += st1.WorkHandler;
   tr.PublishWorkEvent += st2.WorkHandler;
   tr.PublishWorkEvent += st3.WorkHandler;
   while(true)//每隔1s触发一次事件
   {
       Thread.Sleep(1000);
       tr.PublishEvent(new WorkEventArgs("抄写新华字典"));
   }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 委托和事件(续)

 C#中的委托和事件(续) 本文系转载, 引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地...
  • amwsffkhtd
  • amwsffkhtd
  • 2014年11月11日 17:12
  • 193

年度工作计划(续)

 工作计划之工作进度(when)有了计划的内容,分工和工作的方法,那么计划的有效进行及完成就是最后的关键了。甘特图就是制定计划进度的好方法。按照工作计划整体的部署,进度是很关键的一部分。它的如期完成对...
  • chxljtt
  • chxljtt
  • 2008年01月10日 09:08
  • 589

[C#]C#中委托和事件(续)

引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些...
  • s10141303
  • s10141303
  • 2014年03月02日 00:31
  • 1376

编程珠玑及续笔记

15.2 最长重复子串#include #include using namespace std; const int MAXN=5000000; char c[MAXN],*a[MAXN];...
  • hz5034
  • hz5034
  • 2015年03月30日 10:22
  • 496

C#中的委托和事件(续)

C#中的委托和事件(续)源码下载:http://www.tracefact.net/SourceCode/MoreDelegate.rar引言      如果你看过了 C#中的委托和事件 一文,我想你...
  • huang_dannier
  • huang_dannier
  • 2010年01月20日 15:27
  • 226

病程续打程序(word vba)

因为工作需要,自己写的用于医疗病历的病历续打程序,无模板限制,在word中使用,也可用于任意文件的定位续打-------------------------------------------- Su...
  • nsxcyj
  • nsxcyj
  • 2010年05月14日 17:06
  • 1413

c#连续打印问题,即进销存销售单打印问题完美解决

最近在做某药厂的管理系统,包括进销存以及生产管理,其中需要打印单据,开始使用aspose.cell实现打印功能,运行不错,这个第三方表格操作非常简单便捷。但是突然有一天客户反应单子打印异常,发给我图片...
  • lcj401175209
  • lcj401175209
  • 2017年03月17日 10:44
  • 536

C#中的委托和事件(续)

C#中的委托和事件(续) 引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和...
  • joker_wqz
  • joker_wqz
  • 2013年08月20日 10:05
  • 281

C#中委托和事件(续)

引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些...
  • cl110cl
  • cl110cl
  • 2013年10月24日 21:29
  • 650

C# 中的委托和事件 续

如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的...
  • zhwei_87
  • zhwei_87
  • 2012年05月31日 11:06
  • 192
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#事件续
举报原因:
原因补充:

(最多只允许输入30个字)