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测试流程
    【转】软件测试上线标准
    安全性测试之修改密码
    LoadRunner 实现监控Tomcat
    【转】人生应该接受的教育
    晓光聊《小厂如何做测试》
    由测试需要多少编程知识想到的
    12款很棒的浏览器兼容性测试工具推荐
    最近感悟测试人员需要的一种能力
    APP测试功能点总结
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/5077533.html
Copyright © 2011-2022 走看看