我有这样的方法:异步任务被冻结UI
private async Task DoSomething()
{
// long running work here.
}
当我这样调用它阻止方法的UI:
Task t = DoSomething();
我必须做的这些之一使它非阻塞:
Task t = new Task(() => DoSomething());
t.Start();
// Or
Task t = Task.Factory.StartNew(() => DoSomething());
那么什么是异步的点/等待时,你可以使用任务,因为他们在框架4和使用Task.Wait()
代替await
?
编辑: 我理解你的答案 - 但没有真正解决我的最后一段。任何人都可以给我一个基于任务的多线程示例,其中异步/等待提高了程序的可读性和/或流程?
“异步”的目的不是多线程。它用于异步编程。您可以*使用'Task.Run'执行多线程,但'async'也可以与其他异步操作(如I/O)一起使用。基于任务的异步模式非常强大,因为它可以以同样的方式处理任何异步操作(无论CPU限制,I/O限制还是其他)。 –