 <p>You don't need to create a new thread to deal with the EndRequest or EndResponse callback - these will be called for you on a background thread from the ThreadPool. So something like your first code example should work.</p> <p>If you don't like the nested lambdas just declare named methods :). You can pass state information in the Begin... methods which you can retrieve in the result object.</p> <p>What you're asking is kind of weird - you're wrapping an async framework with sync version, and rewrapping <em>that</em> with an async version. It sounds like you're creating extra work for yourself in order to stay faithful to your port. You will also use some extra memory to keep an extra thread alive doing nothing (1MB for the stack at least). </p> <p>If you still want to do it check out <a href="http://www.codeproject.com/KB/windows-phone-7/async-wp7.aspx" rel="nofollow">this link</a> though.</p>