>>888
コンソールアプリとwpfみたいなguiアプリではTaskの実行コンテキストが違うからってのがあるかな。

メインでResultを受け取るには、awaitの後にConfigureAwait(false)が必要。
var ret = await Abc().ConfigureAwait(false);

別のやり方としては、WaitとかResultで受け取らず、ContinueWithで以降の処理を囲むという手もある。
まあ、この方法はイベントハンドラの中の改変量が多くなるけど

c# Task 実行コンテキスト 辺りの言葉で探してみるといいよ