c# - 異步/等待與線程



.net (2)

它可以完全取代舊的使用線程的方式嗎?

不。一個線程可以做更多有用的事情。 等待是專門設計來處理需要時間的事情 ,通常是I / O請求。 傳統上在I / O請求完成時用回調完成。 編寫依賴這些回調的代碼是非常困難的,等待大大簡化它。

能夠做一個線程可以異步執行的任務嗎?

大致。 等待只是處理延遲,它不會做任何線程。 await關鍵字的等待表達式是什麼讓工作完成。 理想情況下,它根本不使用線程,它發布驅動程序請求,一旦驅動程序完成數據傳輸,它將生成完成通知回調。 網絡是迄今為止最常見的用法,數百毫秒的延遲是常見的,並且是從桌面或局域網到“雲”的服務的不可避免的副作用。 同步使用這些服務會使UI非常反應。

只能用於WebClient.DownloadStringAsync等一些方法

不可以。您可以使用任何返回任務的方法。 XxxxAsync()方法在.NET框架中僅用於需要時間的常見操作。 就像從網絡服務器下載數據一樣。

https://code.i-harness.com

在.Net 4.5中,Microsoft已經添加了新的Async/Await功能來簡化異步編碼。 但是,我想知道

  1. Async/Await完全替代舊的使用Threads嗎?
  2. Async/Await能夠執行任何Thread可以異步執行的操作嗎?
  3. Async/Await只能用於WebClient.DownloadStringAsync類的某些方法,還是可以將任何同步方法轉換為使用Async/Await而不是阻止主線程?

對此的官方聲明。 儘管在盲目地用別人替換一件事之前,你應該理解線程和異步編程之間的差異。





.net