现在的位置: 首页 > 综合 > 正文

C# 自定义事件

2017年10月02日 ⁄ 综合 ⁄ 共 1167字 ⁄ 字号 评论关闭
C#自定义事件和java有所不同,涉及到委托。下面代码包括自定义事件从事件定义到事件触发和执行的全过程。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
//using System.Timers;

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

        public event MessageHandler MessageArrive;//定义一个事件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("New Message Arrived, And has been handled successfully");//触发MessageArrive事件
            }
        }
        static void Main(string[] args)
        {
            Connections connector = new Connections();
            Display displayor = new Display();
            connector.MessageArrive += new MessageHandler(displayor.DisplayMessage);//将一个委托实例赋值给事件MessageArrive,参数为方法									 //DisplayMessage,方法的参数要与委托类的参数一致。
            connector.Connect();
            Console.ReadKey();
        }
    }


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

抱歉!评论已关闭.