有效的非阻塞执行

Effective non-blocking execution

我实现了一个在云上运行的服务。我有一个方法 fastExcute() 可以非常快速地进行一些计算。 我需要在方法中添加一个调用 IndependentBackgroundMethodAsync() 到其他可以在后台执行的方法,它何时完成工作并不重要,但它应该完成!。最主要的是它最终会完成它的工作 所以我想这样做:

fastExecute()
{
Task task = IndependentBackgroundMethodAsync();
//fast code
await t; < - could cause fastExecute not to be fast
}

另一方面,将代码设为:

fastExecute()
    {
    Task task = IndependentBackgroundMethodAsync();
    //fast code
    }

不保证 IndependentBackgroundMethodAsync 最终会执行并完成其工作

做我需要做的事情的最佳做法是什么?

如果您想异步执行 IndependentBackgroundMethodAsync 并且您关心结果,我会使用 ContinueWith(参见 MSDN continuewith) 任务完成后将执行延续任务。

 fastExecute()
{
Task task = IndependentBackgroundMethodAsync();

task.ContinueWith(result => // handle result); 

 //fast code

}