zoukankan      html  css  js  c++  java
  • c# 异步编程总结

    异步编程前提

    1.学委托 delegate

    其中委托中的beginInvoke()和endInvoke()方法必须要会。

    2.学习回调函数

    (也可以不用,但是一般建议用回调函数中执行endinvoke()方法)

    回调函数也是一个方法, 只不过是把这个方法作为参数传递到另一个以回调函数作为参数的方法中,

    当这个方法执行完之后,就会自动执行这个回调函数方法。
    注意
    1必须是主方法必须要有回调函数作为参数 
    2没有返回类型

    异步编程适用范围


    1.异步编程是建立在委托基础上的
    2.异步调用的每一个方法都是在独立的线程中执行的,因此可以说一个简化的多线程
    3.比较适用在后台运行比较耗时的 简单任务,并且任务之间是独立的,不能直接访问可视化控件。
    4.如果后台任务按照特定顺序执行或者共享特定资源,不太适合异步,建议直接使用多线程编程

     异步编程步骤

    1.定义一个委托
    代码:
    public delegate int MyDelegate(int i)
    2.根据委托定义实现方法 可以是多个
    代码:
    private int MyExectue1(int i)
    {
    return i=i+1;
    }
    private int MyExectue2(int i)
    {
    return i*i;
    }
    3.实例化委托,并绑定方法
    代码:
    MyDelegate mydel=MyExectue1; //这里不需要变量列表
    4.开始执行委托,并将委托状态复制给 一个委托状态接口(IAsyncResult)
    代码:
    IAsyncResult asyncres=mydel.beginInvoke(10);
    5.开始其他不费时的任务
    6.使用委托的endInvoke()方法得到异步操作结果
    int result=mydel.endInvoke(asyncres,MyCallback,回调函数所用方法);

    7.定义回调函数

    private void MyCallback(IAsyncResult result)
    {
    int res = mydel.EndInvoke(result);
    Console.WriteLine("第{0}个计算结果是:{1}", result.AsyncState.ToString(), res);
    }



  • 相关阅读:
    软件构造 第七章第三节 断言和防御性编程
    软件构造 第七章第二节 错误与异常处理
    软件构造 第七章第一节 健壮性和正确性的区别
    软件构造 第六章第三节 面向可维护的构造技术
    软件构造 第六章第二节 可维护的设计模式
    欧拉函数代码实现及扩展--快速矩阵幂
    编译原理
    算法设计与分析总结
    人工智能简答总结
    感想
  • 原文地址:https://www.cnblogs.com/arcticfish/p/10862021.html
Copyright © 2011-2022 走看看