This talk will present the new language support for asynchronous programming available in the upcoming version of C#, C# 5.0.
Writing distributed or even just IO-intensive applications that are responsive yet frugal with resources is a difficult task. With the rise of web programming this has become a common problem. The solution lies in adopting asynchronous operations that separate issuing a request from awaiting its completion. While it has always been possible to program asynchronously in C# it has never been easy. The challenge is that asynchronous operations rely on callbacks, forcing the programmer to cede control. This inversion of control-flow impedes the use of structured control constructs, the staple of sequential code. The new asynchronous methods available in C# 5.0 enable straigthforward asynchronous and concurrent programming using structured control constructs. I'll start with an informal introduction to the basic feature, its inherent support for concurrency, and its built-in extension points. If time permits, I'll sketch a high-level operational semantics designed to explain the feature without resorting to sample compiler output, the lower-level description contained in Microsoft's draft specification.