2013-09-16 223 views
12

我完全被C#中的整個await/async模式所困惑。等待非異步方法

我有一個表格應用程序,我想調用一個方法,需要20秒做一噸的處理。所以我想await吧。我認爲正確的方法是將其標記爲async Task,但這樣做會產生警告,因爲我不在其中的任何地方使用await

谷歌透露了一些關於返回TaskCompletionSource<T>但我沒有返回類型,因爲它是無效的。

如何使用await來調用此方法?

+3

'async'不會在後臺線程上執行該方法;我有一個['async' /'await'介紹](http://blog.stephencleary.com/2012/02/async-and-await.html),您可能會發現有幫助。 –

回答

35

打電話給你的方法如下:

await Task.Run(() => YourMethod()); 

當你使用它爲您創建一個awaitable任務Task.Run方法。

+0

Task.Run是否在主UI線程上運行「YourMethod」,或創建一個新線程? (例如WinForms) – harag