C#中async编程完全代替了Task了吗_百度知道

async会和当前线程的SychronizeContext关联,在Web和UI上面的表现某些情况会和Console的不一致。(例如一个async任务的Task上调用.Wait(),Web和UI会死锁而Console不会)
而Task.Run无论在哪里都是默认使用ThreadPool的SynchronizeContext,在Web和UI和Console上的表现一致。
所以不能说async完全替代了Task,Task是作为TPL(Task Parallel Library,并行任务库)的一员,具有比async/await关键字更高的可控性。

提问者评价

现在才发现这两个其实并不冲突。在把一个普通方法包装成一个异步方法的时候,这两个东西需要一起使用

来源URL:http://zhidao.baidu.com/link?url=yAK-C4FQ4JVEmwOimywqloKrX1fzjhWsVjfjkmsclpEbyforicZDXIedhMIXCXf3_9Q05YS640YJqzTcJqYic8wcKe0sMq3EjDhdb9Ww8Y3