More Related Content
Similar to async/await deep dive (20)
More from Takaaki Suzuki (20)
async/await deep dive
- 6. Why is it important ?
UIが長くフリーズするのを防ぐ
•
•
タッチデバイスでは不快感が特に顕著
•
I/Oなどをバックグラウンド処理して効率化
•
多機能化によるパフォーマンスの劣化への対処
•
複数コアを利用した並列処理
避けては通れない課題
- 23. Async on WinRT Co
WinRTの非同期操作は以下のいずれかを実装
•
Progress
Results
Yes
No
Yes
IAsyncOperationWithProgress
IAsyncOperation
No
IAsyncActionWithProgress
IAsyncAction
すべてCompletedプロパティを持つ
•
•
•
完了時に呼び出されるデリゲートを1度だけ設定可能
完了後に設定してもCallbackされる
これをawaitできればMetroの開発が楽に!!
- 24. Convert to Task Dire
•
これらのInterfaceをTaskに変換できればawait可能
•
TaskCompletionSource<T>を使って拡張メソッド化
•
内部保持するTaskの完了をSetResultメソッドなどで制御
- 25. Direct await .NET S
•
•
•
.AsTask();とか毎回×2書きたくない...
.AsTask();と書かずにawaitするには?
• GetAwaiterを実装すればよい (参照 : コンパイラ要件)
以下は完全に同等