在没有异步/等待的情况下异步等待Task <T>

Chr*_*ruS 2 c# asynchronous task-parallel-library

Task在我执行其他操作之前,我希望我完成.如果我使用

Task.WaitAll(task);
Run Code Online (Sandbox Code Playgroud)

它肯定会阻止我的UI线程.在Task不使用async / await(我使用的是.NET v4.0)的情况下异步等待完成的最佳方法是什么?

小智 7

async / await添加Microsoft.Bcl.Async NuGet package到项目中时,也可以在.NET 4.0中使用.除此之外,您没有太多选择 - 要么使用异步调用,要么使用您提到的方法阻止您的线程.

但是,await在使用异步方法时,您不会受到约束.您还可以使用回调:

task.ContinueWith(r => {
    /* code */
});
Run Code Online (Sandbox Code Playgroud)

  • 如果`Microsoft.Bcl.Async`不是一个选项,那么`Task.Factory.ContinueWhenAll`是`Task.WaitAll`的一个很好的替代品. (4认同)