• C#异步编程(二)


    async和await结构

    • 前篇博客异步编程系列(一) 已经介绍了何谓异步编程,这篇主要介绍怎么实现异步编程,主要通过C#5.0引入的async/await来实现。

    BeginInvoke和EndInvoke

    • 在学习async/await结构的异步编程前,先了解一下5.0以前是怎么使用异步
    1. BeginInvoke方法
    • 从当前线程池中获取一个线程运行调用的方法;返回给给调用的线程IasyncResult接口对象,
      包含了异步方法的状态信息,原始线程继续向下执行。
    1. EndInvoke方法
    • 接收BeginInvoke返回的对象;若异步方法仍未执行完毕,当前线程就会停止并等待异步方法的线程执行
      完毕。

    async和await关键字

    • async和await必须成对出现,即在调用异步方法时,使用await关键字等待异步操作完成时,
      同时,在使用await关键字在的方法或匿名方法上加上async关键字以注明该方法内包含异步
      等待语句。

    异步方法

    • 在该方法执行完成前立即返回调用方法,在调用方法继续执行的过程中完成任务

    返回类型

    1. void
    • 单纯调用方法执行异步方法

    1. Task
    • 调用方法执行异步方法,用Task对象接收,可以查看和改变异步方法的状态

    1. Task< T >
    • 调用方法执行异步方法,并从中获取一个T类型的返回值


    • 异步方法可以返回Task,Task< T >和void,但在大多数情况下,都返回Task或者Task< T >,
      只有必要时才返回void。因为Task和Task< T >是异步操作,可以把结果传给await操作,
      而返回值为void的方法,不能做到,也不能检查到异步方法的状态。void最常用在事件句柄中,
      例如winform中button按钮就可以改成异步操作。

  • 相关阅读:
    selenium又一小坑 无法用XPATH直接获取属性值 需要使用.get_attribute(“href”)
    seleium 之 EC 的用法
    用筛选法求100以内的素数(筛选法!!!)
    gets scanf getchar的用法
    P5728 【深基5.例5】旗鼓相当的对手
    访问那个地址上的变量 *
    素数表
    求素数
    求符合给定条件的整数集(c语言mooc 6.0 )
    C#理论学习
  • 原文地址:https://www.cnblogs.com/nxhdw/p/6253863.html
Copyright © 2020-2023  润新知