2013-09-16 33 views
12

C#のawait/asyncパターン全体が完全に混乱しています。非同期メソッドを待つ

私はフォームアプリケーションを持っており、1トンの処理に20秒かかります。だから私はawaitにしたい。正しい方法はasync Taskとマークすることだと思っていましたが、これを実行すると、どこにでもawaitを使用しないため警告が表示されます。

googleはTaskCompletionSource<T>を返すことについて明らかにしましたが、無効なので返品タイプはありません。

awaitを使用してこのメ​​ソッドを呼び出すにはどうすればよいですか?

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

あなたはTask.Runメソッドを使用する場合、それはあなたのためawaitableタスクを作成します:

+3

'async'はバックグラウンドスレッドでメソッドを実行しません。私は役に立つかもしれない['async' /' await'の紹介(http://blog.stephencleary.com/2012/02/async-and-await.html)を持っています。 –

答えて

35

は以下の通りあなたのメソッドを呼び出します。

+0

Task.Runは、メインのUIスレッドで "YourMethod"を実行するか、新しいスレッドを作成しますか? (WinFormsなど) – harag

関連する問題