I made this slide deck that covers all of the Async CTP technically.

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.