自定义事件

简介:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Timers; // 计时器


namespace DemoConnection
{
    public delegate void MessageHandler(string messageText);
    public class Connection
    {
        public event MessageHandler MessageArrived; // 定义一个委托的实例
        private Timer pollTimer;

        public Connection()
        {
            pollTimer = new Timer(100);
            pollTimer.Elapsed += new ElapsedEventHandler(CheckForMessage); // 每一百毫秒执行一次
        }

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

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

        private static Random random = new Random();
        private static int count = 0;

        private void CheckForMessage(object source,ElapsedEventArgs e)
        {
            Console.WriteLine("检测新消息.");
            if ((random.Next(9) == 0) && (MessageArrived != null))
            {
                count++;
                //触发MessageArrived事件
                MessageArrived("第"+count+"次问候您!");
            }
        }

    }

    public class Display
    {
        public void DisplayMessage(string message)
        {
            Console.WriteLine("消息来了:{0}",message);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Connection myConnection = new Connection();
            Display myDisplay = new Display();
            //将一个委托实例赋值给事件MessageArrived
            myConnection.MessageArrived += new MessageHandler(myDisplay.DisplayMessage);
            myConnection.Connect();
            Console.ReadKey();
        }
    }
}

方法论:说实话,我还不太理解这段代码。

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6803018.html,如需转载请自行联系原作者

相关文章
|
6月前
|
JavaScript
62Vue - 自定义事件(使用自定义事件的表单输入组件)
62Vue - 自定义事件(使用自定义事件的表单输入组件)
23 0
|
6月前
|
JavaScript
39Vue - 事件处理器(事件修饰符)
39Vue - 事件处理器(事件修饰符)
20 0
|
4月前
|
前端开发 JavaScript UED
Vue3中的事件处理:事件绑定、事件修饰符、自定义事件
Vue3中的事件处理:事件绑定、事件修饰符、自定义事件
103 0
|
4月前
【Vue2.0】—事件处理和事件修饰符(二)
【Vue2.0】—事件处理和事件修饰符(二)
|
6月前
|
JavaScript API
61Vue - 自定义事件(使用 v-on 绑定自定义事件)
61Vue - 自定义事件(使用 v-on 绑定自定义事件)
22 0
|
6月前
|
JavaScript 前端开发
36Vue - 事件处理器(监听事件)
36Vue - 事件处理器(监听事件)
14 0
|
6月前
|
JavaScript 前端开发
37Vue - 事件处理器(方法事件处理器)
37Vue - 事件处理器(方法事件处理器)
17 0
|
8月前
|
JavaScript
Vue学习之参数传递与事件分发使用this.$emit(‘自定义事件名‘, 参数)自定义事件删除待办事项
数据项在 Vue 的实例中,但删除操作要在组件中完成,那么组件如何才能删除 Vue 实例中的数据呢? 此时就涉及到参数传递与事件分发了,Vue 为我们提供了自定义事件的功能很好的帮助我们解决了这个问题;使用this.$emit(‘自定义事件名’, 参数),操作过程如下
125 0
|
8月前
|
JavaScript
Vue事件处理+事件修饰符
Vue事件处理+事件修饰符
|
XML 缓存 NoSQL
事件监听思考
在整合在项目中,我们通常需要基于事件去触发另外的业务逻辑动作的完成。也即在我们做需求时,通常会基于不同的事件码来完成业务处理,此时可以考虑将其单独处理,基于观察者模式+策略模式。还有一种如果当Spring完成Bean的初始化,需要做一些特殊处理,此时除了使用InitializingBean,还可以使用监听完成一些定制化的初始化动作,实现ApplicationListener<ContextRefreshedEvent>。
104 0
事件监听思考