C# 异步等待任务<;T>;没有异步/等待

C# 异步等待任务<;T>;没有异步/等待,c#,asynchronous,task-parallel-library,C#,Asynchronous,Task Parallel Library,我希望在执行其他操作之前完成我的任务。如果我使用 Task.WaitAll(task); 它肯定会阻塞我的UI线程。在不使用async/await(我使用的是.NET v4.0)的情况下,异步等待任务完成的最佳方法是什么?在将Microsoft.Bcl.async NuGet包添加到项目中时,您也可以在.NET 4.0中使用async/await。除此之外,您没有太多的选择——要么使用异步调用,要么使用前面提到的方法阻塞线程 但是,在使用异步方法时,您不必等待。您还可以使用回调: task.C

我希望在执行其他操作之前完成我的
任务
。如果我使用

Task.WaitAll(task);

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

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

但是,在使用异步方法时,您不必等待。您还可以使用回调:

task.ContinueWith(r => {
    /* code */
});

异步等待的概念正在伤害我的大脑……为什么不同步运行它呢?你只能编写continuations(
ContinueWith
)。也就是说,您可以使用async&Wait和target.NET4。但是,您必须使用VS2012。如果要等待异步调用完成,那么进行异步调用有什么意义呢。这就像走一条1车道的路,把它分成8车道,然后回到1车道。嗯,如果你的意思是“当某个任务完成时,我如何调用一个方法”,那么@user2834880的答案是正确的。如果
Microsoft.Bcl.Async
不是一个选项,然后是
Task.Factory.continuewhall
Task.WaitAll
的好替代品。