异步(async 和await)
异步编程
并发的一种形式,它采用 future 模式或回调(callback)机制,以避免产生不必要的线程。
一个 future(或 promise)类型代表一些即将完成的操作。在 .NET 中,新版 future 类型
有 Task 和 Task 。在老式异步编程 API 中,采用回调或事件(event),而不是
future。异步编程的核心理念是异步操作:启动了的操作将会在一段时间后完成。这个操作
正在执行时,不会阻塞原来的线程。启动了这个操作的线程,可以继续执行其他任务。当
操作完成时,会通知它的future,或者调用回调函数,以便让程序知道操作已经结束。
异步操作是.net4.5推出的新名词,事实上,这东西早就有了,它归根结底是通过线程池来实现的,即将一个大任务分成多个小任何块,每个线程并行处理其中的一个,完成后再把结果告诉主线程,在.net4.5推出后,这种技术得到了封装,让开发人员实现起来更加方便了,但是,并发(异步,多线程)并不是在哪里都适用的,使用不当,可能出现很多严重的后果!
使用异步编程,方法调用是在后台执行(通常在线程的帮助下),并且不会阻塞调用线程。
await 关键字会解除线程(这里是UI线程)的阻塞ÿ