F# – helper functions to convert between Async<unit> and Task

Yan Cui

I help clients go faster for less using serverless technologies.

With the official release of .Net 4.5 and Visual Studio 2012, I suspect many .Net developers will be rushing to rewrite their data access or network layers (amongst many many other things!) to take advantage of the new async-await (see the excellent 101 examples here) language feature in C#, which means you’ll likely be working with the Task and Task<T> type an awful lot.

If you have F# code that needs to interop with C# that returns or awaits some task types then you’ve probably already come across the Async.StartAsTask<T> and Async.AwaitTask<T> methods for converting between F#’s Async<T> and Task<T> types. Curiously, there are no equivalent methods on the Async class for converting between Async<unit> and Task types.

So, to fill in the gaps ourselves, here are two simple functions to do just that:




Whenever you’re ready, here are 4 ways I can help you:

  1. If you want a one-stop shop to help you quickly level up your serverless skills, you should check out my Production-Ready Serverless workshop. Over 20 AWS Heroes & Community Builders have passed through this workshop, plus 1000+ students from the likes of AWS, LEGO, Booking, HBO and Siemens.
  2. If you want to learn how to test serverless applications without all the pain and hassle, you should check out my latest course, Testing Serverless Architectures.
  3. If you’re a manager or founder and want to help your team move faster and build better software, then check out my consulting services.
  4. If you just want to hang out, talk serverless, or ask for help, then you should join my FREE Community.


1 thought on “F# – helper functions to convert between Async<unit> and Task”

Leave a Comment

Your email address will not be published. Required fields are marked *