zoukankan      html  css  js  c++  java
  • 事件的三种类型,应用篇

    同步事件
    1.声明事件
    //负责传递消息
    public delegate void MethodCall(string message);
    public static event MethodCall requestdata;

    2.注册事件
    Page_Load事件中注册事件
     requestdata+= new MethodCall(FormDataGridViewDataTable_requestdata);

    3.显式的触发事件
    private void button8_Click(object sender, EventArgs e)
    {
        if (requestdata != null) requestdata("Click Me"+DateTime.Now.ToString());
    }

    4.执行事件
     private void FormDataGridViewDataTable_requestdata(string message)
    {
         Text = message;
    }

    异步事件
    1.声明事件

    public event EventHandler AnalyseFileDataCompleted;
    public void OnAnalyseFileDataCompleted()
    {
         EventHandler handler = (EventHandler)AnalyseFileDataCompleted;
         if (handler != null)
         {
             handler.Invoke(this, null);
          }
    }
    2.注册事件
     AnalyseFileDataCompleted+=new EventHandler(FormDataGridViewDataTable_AnalyseFileDataCompleted);

    3.显式的触发事件
    private void button8_Click(object sender, EventArgs e)
    {
        OnAnalyseFileDataCompleted();
    }
    4.执行事件
    private void FormDataGridViewDataTable_AnalyseFileDataCompleted(object sender,EventArgs e)
    {
        for (int i = 0; i < 12000000; i++)
        {
            Text = "异步事件";
         }
         MessageBox.Show("00");
    }


    泛型异步事件
    1.声明事件
    public event EventHandler<FileAnalysisEventArgs<T>> AnalyseFileDataChanged;
    public void OnAnalyseFileDataChanged(FileAnalysisEventArgs<T> arg)
    {
        EventHandler<FileAnalysisEventArgs<T>> handler = (EventHandler<FileAnalysisEventArgs<T>>)AnalyseFileDataChanged;
        if (handler != null)
        {
            handler.Invoke(this, arg);      //使用异步传送消息
         }
    }

    2.注册事件
    _fileAnalyse.FileEvent.AnalyseFileDataCompleted += new EventHandler<FileAnalysisEventArgs<T>>(FileEvent_AnalyseFileDataCompleted);

    3.显式的触发事件
    private void button8_Click(object sender, EventArgs e)
    {
      _fileAnalyseEvent.OnAnalyseFileDataChanged(new FileAnalysisEventArgs<T> { AnalyseEntity = tmpEty, LineNum = lineNum });

    4.执行事件
    protected void FileEvent_AnalyseFileDataChanged(object sender, FileAnalysisEventArgs<T> e)
    {
      _form.Invoke((MethodInvoker)delegate
       {
                          
        });

  • 相关阅读:
    学习笔记-级数
    闭包
    superfetch服务到底该不该关闭
    用tor进入“深网”
    浏览器内核
    媒体查询实现响应式布局
    oracle用浏览器界面管理数据库
    angular登录状态检查
    从输入网址后。。。。。。
    原型
  • 原文地址:https://www.cnblogs.com/qiaojun/p/2055744.html
Copyright © 2011-2022 走看看