1. CancellationTokenSource的使用
https://binary-studio.com/2015/10/23/task-cancellation-in-c-and-things-you-should-know-about-it/
2.TaskCompletionSource的使用
https://stackoverflow.com/questions/4238345/asynchronously-wait-for-taskt-to-complete-with-timeout
https://devblogs.microsoft.com/pfxteam/crafting-a-task-timeoutafter-method/
3. ConfigureAwait(false)