I made this slide deck that covers all of the Async CTP technically.
- [powerpoint] A technical introduction to the Async CTP.pptx
- [pdf] A technical introduction to the Async CTP.pdf
Here are its contents:
- [100-level] Straightforward explanation of when and how to use Async
- What is the difference between “asynchrony” and “concurrency” — and when to use them (and when not)
- Why asynchrony is different from “running on a background thread”
- How to use the async+await keywords
- [200-level] How exactly does an async program behave?
- A detailed animation of control-flow of an async method
- What happens on the UI thread, IOCP (IO Completion Port) threads, and the UI message-queue
- What is the new “Task Asynchronous Pattern” (TAP) in the framework
- How to use cancellation in the TAP, and push or pull approaches to progress-notification
- [300-level] What library-authors should know about async
- How to make your own types awaitable
- How to implement TAP-like APIs yourself
- [400-level] How is async implemented? How was it designed?
- Full details of the compiler transformation — how it rewrites asynchronous methods, and how it deals with try/catch blocks
- Discussion and explanation of several design decisions we made
- How Async relates to existing computer science theory.