C# 自定义事件

C#自定义事件和java有所不同,涉及到委托。下面代码包括自定义事件从事件定义到事件触发和执行的全过程。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
//using System.Timers;

namespace EventTest
{
    //定义一个委托MessageHandler,可以看作是一个类。
    public delegate void MessageHandler(string messageText);
    class Connections
    {

	
	//定义一个事件MessageArrive,是委托的实例
        public event MessageHandler MessageArrive;
        private Timer pollTimer;
        private static Random random = new Random();

        public Connections()
        {
            this.pollTimer = new Timer();
            pollTimer.Elapsed += new ElapsedEventHandler(Display);
        }

        public void Connect()
        {
            pollTimer.Start();
        }

        public void Disconnect()
        {
            pollTimer.Stop();
        }

        public void Display(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("New Message Coming");
            if (random.Next(9) == 0 && MessageArrive != null)
            {
		//触发MessageArrive事件
                MessageArrive("New Message Arrived, And has been handled successfully");
            }
        }
        static void Main(string[] args)
        {
            Connections connector = new Connections();
            Display displayor = new Display();
	    //将一个委托实例赋值给事件MessageArrive,参数为方法DisplayMessage,方法的参数要与委托类的参数一致。
            connector.MessageArrive += new MessageHandler(displayor.DisplayMessage);
            connector.Connect();
            Console.ReadKey();
        }
    }


    public class Display
    {
        public void DisplayMessage(string text)
        {
            Console.WriteLine(text);
        }
    }
}



 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值