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

C#事件演示程序1)——一个最简单的C#事件处理程序

2013年10月28日 ⁄ 综合 ⁄ 共 1575字 ⁄ 字号 评论关闭
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication13
{
    
/// <summary>
    
/// 事件演示程序
    
/// </summary>

    class Program
    
{
        
static void Main(string[] args)
        
{
            MyEvent myEvent 
= new MyEvent();

            
//注册事件(或者说订阅事件)
            myEvent.wakeUp += new EventHandler(ShowMessage);
            
            
//在外部触发事件
            myEvent.OnEvent();
            
        }


        
/// <summary>
        
/// 事件处理程序(演示)
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        public static void ShowMessage(object sender,EventArgs e)
        
{
            Console.WriteLine(
"hello,it's time to wakeup!");
        }


    }


    
/// <summary>
    
/// 定义事件的类
    
/// </summary>
    
/// <remarks>
    
/// 在代理的基础上,事件实现了了另一个重要的机制:内部调用外部
    
/// 不能不佩服微软构思的巧妙,将代理稍一封装,就做成了功能强大的事件机制.
    
/// 事件最本质上的作用就是: 通知功能.能自动在某个事件触发时通知别的类或程序,
    
/// 执行一些代码.
    
/// </remarks>

    public class MyEvent
    
{
        
/// <summary>
        
/// 声明事件
        
/// </summary>

        public event EventHandler wakeUp;

        
/// <summary>
        
/// 触发事件的函数,供外部调用,来触发该对象的事件
        
/// </summary>

        public void OnEvent()
        
{
            RaiseMyEvent();
        }


        
private void RaiseMyEvent()
        
{
            
if ( wakeUp != null )
            
{
                
//复制一份,避免多线程访问时产生NullReferenceException.在此仅供演示.
                EventHandler bkWakeUP = wakeUp;
                
//调用外部的事件处理程序
                bkWakeUP(thisnew EventArgs());
            }

        }



    }

}



 

抱歉!评论已关闭.