@inbook {IOPORT.06086773, author = {Bierman, Gavin and Russo, Claudio and Mainland, Geoffrey and Meijer, Erik and Torgersen, Mads}, title = {Pause `n' play: formalizing asynchronous C$^\sharp$.}, year = {2012}, booktitle = {ECOOP 2012 -- object-oriented programming. 26th European conference, Beijing, China, June 11--16, 2012. Proceedings}, isbn = {978-3-642-31056-0}, pages = {233-257}, publisher = {Berlin: Springer}, doi = {10.1007/978-3-642-31057-7_12}, abstract = {Summary: Writing applications that connect to external services and yet remain responsive and resource conscious is a difficult task. With the rise of web programming this has become a common problem. The solution lies in using asynchronous operations that separate issuing a request from waiting for its completion. However, doing so in common object-oriented languages is difficult and error prone. 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. In this paper, we describe the language support for asynchronous programming in the upcoming version of C$^\sharp$. The feature enables asynchronous programming using structured control constructs. Our main contribution is a precise mathematical description that is abstract (avoiding descriptions of compiler-generated state machines) and yet sufficiently concrete to allow important implementation properties to be identified and proved correct.}, identifier = {06086773}, }