zoukankan      html  css  js  c++  java
  • C#自定义事件

    简单的自定义事件

    首先定义一个类来监听客户端事件,这里我们监听键盘的输入。

    定义一个委托。

    public delegate void UserRequest(object sender,EventArgs e);

    前面的object用来传递事件的发生者,后面的EventArgs用来传递事件的细节,现在暂时没什么用处,一会后面的例子中将使用。

    下面定义一个此委托类型类型的事件

    public event UserRequest OnUserRequest;

    下面我们来做一个死循环

    public void Run() 

        bool finished=false; 
        do 
           { 
              if (Console.ReadLine()=="h") 
                { 
                   OnUserRequest(this,new EventArgs()); 
                }
           }while(!finished); 
    }

    此代码不断的要求用户输入字符,如果输入的结果是h,则触发OnUserRequest事件,事件的触发者是本身(this),事件细节无(没有传递任何参数的EventArgs实例)。我们给这个类取名为UserInputMonitor。

    下面我们要做的是定义客户端的类 
    首先得实例化UserInputMonitor类 
    UserInputMonitor monitor=new UserInputMonitor();

    然后我们定义一个方法。

    private void ShowMessage(object sender,EventArgs e) 

    Console.WriteLine("HaHa!!"); 
    }

    最后要做的是把这个方法和事件联系起来(订阅事件),我们把它写到库户端类的构造函数里。

    Client(UserInputMonitor m) 

    m.OnUserRequest+=new UserInputMonitor.UserRequest(this.ShowMessage); 
    //m.OnUserRequest+=new m.UserRequest(this.ShowMessage);

    //注意这种写法是错误的,因为委托是静态的

    }

  • 相关阅读:
    jsonp跨域请求
    jQuery之异步Ajax请求使用
    table表格cellspacing与cellpadding属性
    常用正则匹配
    插入数据显示 Duplicate entry '4913' for key 'user_id'
    事件驱动模型 IO多路复用 阻塞IO与非阻塞IO select epool
    python 协程
    python 进程 线程
    python 并发socketserver模块
    python 网络 socket
  • 原文地址:https://www.cnblogs.com/hanmos/p/1946976.html
Copyright © 2011-2022 走看看