Task<TResult>.Result

実は、Task<TResult>.Resultは、結果が確定するまでそのスレッドを止めて待っていてくれる。

https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task-1.result?view=netframework-4.0

なので、Thread.Sleepで待つ必要はない。

これで実行すると、

Funcの処理は5秒かかるので、5秒経つと、
Funcの処理は5秒かかるので、5秒経つと、

Funcの処理は5秒かかるので、5秒経つと、

結果が出る。
結果が出る。

結果が出る。
そこまでメインスレッドを待たせてくれる。

Sample/dotnet/Task_TResult/Result/src/Task_TResult_ at master · bg1bgst333/Sample · GitHub