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#中的委托和事件(续)

  • 2008年10月24日 23:08
  • 215KB
  • 下载

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

  • 2008年11月21日 10:15
  • 179KB
  • 下载

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

原文推荐:http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html 源码下载:http://www.tracefact....
  • hi_dzj
  • hi_dzj
  • 2011年12月28日 11:20
  • 470

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

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

C#中的委托和事件(续)----转自---http://www.cnblogs.com/JimmyZhang/

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

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

转自:http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html  源码下载:http://www.tracefact.net...

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

http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html 引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和...

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

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

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

转载:http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html 引言 如果你看过了 C#中的委托和事件 一文,我想...

C# 委托和事件(续)

 C#中的委托和事件(续) 本文系转载, 引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#事件续
举报原因:
原因补充:

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