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
  • 單純調用方法執行異步方法html

  1. Task
  • 調用方法執行異步方法,用Task對象接收,能夠查看和改變異步方法的狀態編程

  1. Task< T >
  • 調用方法執行異步方法,並從中獲取一個T類型的返回值異步


  • 異步方法能夠返回Task,Task< T >和void,但在大多數狀況下,都返回Task或者Task< T >,
    只有必要時才返回void。由於Task和Task< T >是異步操做,能夠把結果傳給await操做,
    而返回值爲void的方法,不能作到,也不能檢查到異步方法的狀態。void最經常使用在事件句柄中,
    例如winform中button按鈕就能夠改爲異步操做。async

相關文章
相關標籤/搜索