※個人的な備忘録的なものです。 こっちとかこっちのが良くまとめられています。 ライブラリ制作者向けの内容になっているのでアプリ製作者にはあまり関係がないかもしれません なお、サンプルコードは全てWindowsストアアプリとして実行したものとします デッドロックで泣きを見ないように 下のようなライブラリのコードがあるとします gist11215254 このライブラリのDoAsyncは呼び出され方によってはデッドロックされてしまいます 下のコードがその例になります gist11215568 原因はTaskのWaitメソッドでロックしたスレッドに対して、HeavyWorkAsyncメソッドでワーカースレッドで作業していたTaskが元のUIスレッドに戻ろうとしたためです 図にすると以下のようになります Waitするなと思った方がいらっしゃるかもしれませんが、使用するのは自分ではなく他人のアプリ製作
![async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/fe4fb275ade579f3e75631a151a6607db1709710/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fq%2Fqwerty2501%2F20140424%2F20140424220821.png)