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
       {
                          
        });

  • 相关阅读:
    打印杨辉三角形
    Java中的基本数据类型
    C语言网上点餐系统1.0
    C语言中常用的输入和输出函数
    ubantu忘记登录密码怎么办?(ubantu16.04)
    Linux常用服务器构建-samba(ubantu)
    Vue为文件目录设置别名
    css内容占满全屏
    Vue中引入了better-scroll后 页面上的点击事件不生效了
    javascript中获取dom元素高度和宽度的方法
  • 原文地址:https://www.cnblogs.com/qiaojun/p/2055744.html
Copyright © 2011-2022 走看看