zoukankan      html  css  js  c++  java
  • c# 第五课 async await

    Async 方法有三种可能的返回类型: Task、Task<T> 和 void,但是 async 方法的固有返回类型只有 Task 和 Task<T>。           当从同步转换为异步代码时,任何返回类型 T 的方法都会成为返回 Task<T> 的 async 方法,任何返回 void 的方法都会成为返回 Task 的 async 方法。           下面的代码段演示了一个返回 void 的同步方法及其等效的异步方法:        

    1.           void MyMethod()
    2. {
    3.   // Do synchronous work.
    4.           Thread.Sleep(1000);
    5. }
    6. async Task MyMethodAsync()
    7. {
    8.   // Do asynchronous work.
    9.           await Task.Delay(1000);
    10. }
    11.         

            

    返回 void 的 async 方法具有特定用途: 用于支持异步事件处理程序。           事件处理程序可以返回某些实际类型,但无法以相关语言正常工作;调用返回类型的事件处理程序非常困难,事件处理程序实际返回某些内容这一概念也没有太大意义。           事件处理程序本质上返回 void,因此 async 方法返回 void,以便可以使用异步事件处理程序。           但是,async void 方法的一些语义与 async Task 或 async Task<T> 方法的语义略有不同。        

    Async void 方法具有不同的错误处理语义。           当 async Task 或 async Task<T> 方法引发异常时,会捕获该异常并将其置于 Task 对象上。           对于 async void 方法,没有 Task 对象,因此 async void 方法引发的任何异常都会直接在 SynchronizationContext(在 async void 方法启动时处于活动状态)上引发。           图 2 演示本质上无法捕获从 async void 方法引发的异常。

  • 相关阅读:
    马虎的算式
    jquery中的toggle与slideToggle的区别
    Eclipse下配置C/C++开发环境
    A ResourcePool could not acquire a resource from its primary factory or source
    hadoop mapreduce数据排序
    排序算法之选择排序
    Poj1816(Trie+DFS)
    [置顶] Android4.0 Launcher源码研究
    java第十五天_Map集合,
    VirtualBox下安装ubuntu server 16.04
  • 原文地址:https://www.cnblogs.com/GSONG/p/4440304.html
Copyright © 2011-2022 走看看