1、流程图:
2、await 之后的方法是何时执行,如何执行的?
await 的方法在 Task 执行完成之后,通过调用 Finish
方法执行的。
具体的执行步骤是先将 MoveNext
方法注册到 Task 的回调里,然后在 Task 执行完后调用这个方法。
为什么 await 之后的代码会在不同的线程执行?
这个其实是因为 Task 的机制,Task 会被推到线程池里,由线程池挑选一个线程去执行,await 之后的代码其实是由这个线程去执行的,自然就跟 await 的之前的代码不是一个线程。