You are at an impasse.
Using task.Resultblocks the user interface thread — it cannot complete before the task returned is complete SlowMethodAsync.
However, since it SlowMethodAsyncwas originally launched with the synchronization context also in the user interface thread, the continuation after awaitalso wants to be performed in the user interface thread.
Result , async... async Result.
button1_Click, :
Console.WriteLine("Slow method result on Thread: {0}", await task);
, , , SlowMethodAsync , , , "" , .