Taskをwaitするな。デッドロックする
https://gyazo.com/9ea010ffd1f6e3938edf51bef4fc2940
非同期メソッドは、awaitする内部タスクを開始した後、自分のスレッドを一旦解放します。そして、その内部タスクが完了したとき、処理の続きを「前と同じスレッドで」実行します。その間に、「前のスレッドを既に誰かが使っていたら?」「そして、そのスレッドが解放されるためには、Taskの実行が完了しないといけないとしたら?」はい。デッドロックです。
誰かが使っていたパターン
原因はTaskのWaitメソッドでロックしたスレッドに対して、HeavyWorkAsyncメソッドでワーカースレッドで作業していたTaskが元のUIスレッドに戻ろうとしたためです
Linterで警告だせないのかな?kadoyau.icon