Semphore has WaitAsync() http://msdn.microsoft.com/en-us/library/hh462805.aspx. Not sure there a need to do Task.Run either.