zoukankan      html  css  js  c++  java
  • C#回调实现的一般过程

    C#回调实现的一般过程

    C#的方法回调机制,是建立在委托基础之上的,下面给出它的典型实现过程。

    (一) 定义、声明回调

    Delegate void DoSomeCallBack(type para);

    DoSomeCallBack doSomeCallBack;

    可以看出,这里定义声明的“回调”(doSomeCallBack)其实就是一个委托。

    (二) 初始化回调方法

    doSomeCallBack=new DoSomeCallBack(DoSomeMethod);

    所谓“初始化回调方法”实际上就是实例化刚刚定义了的委托,这里作为参数的DoSomeMethod称为“回调方法”,它封装了对另一个线程中目标对象(窗体控件或其它类)的操作代码。

    (三) 触发对象动作

    Opt obj.Invoke(doSomeCallBack,arg);

    其中,Opt obj为目标操作对象,在此假设他是某控件,故调用其Invoke方法。Invoke方法的签名为:

    • object Control. Invoke(Delegate Method,params  object[] args)

    它的第一个参数为委托类型,可见“触发对象动作”的本质就是把委托doSomeCallBack作为参数传递给控件的Invoke方法,这与委托的使用方式是一模一样的。

    最终作用于对象Opt obj的代码是置于回调方法体DoSomeMethod()中的,如下所示:

    private void DoSomeMethod(type para)

    {

                Opt obj. someMethod(para);

    }

    如果不用回调,而是直接在程序中用“Opt obj. someMethod(para);”则当对象Opt obj不在本线程(夸线程访问)时就会发生如下所提示的错误:“Microsoft.VisualStudio.Debugger.Runtime.CrossThreadMessagingException”类型的异常或“System.InvalidOperationException;线程间操作无效,从不是创建控件**的线程访问它。”

  • 相关阅读:
    团队绩效打分
    软件对标分析
    目前校园百晓生APP与CSDN软件的对比
    Alpha版
    团队项目第一阶段成果展示
    意见汇总
    团队第一阶段冲刺评价
    冲刺(十)
    【WPF学习】第五十八章 理解逻辑树和可视化树
    【WPF学习】第五十七章 使用代码创建故事板
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/5077533.html
Copyright © 2011-2022 走看看