Are there good rule(s) for when to use Task.Delay versus Thread.Sleep?
if the current thread is killed and you use Thread.Sleep and it is executing then you might get a ThreadAbortException.
With Task.Delay you can always provide a cancellation token and gracefully kill it. Thats one reason I would choose Task.Delay. see http://social.technet.microsoft.com/wiki/contents/articles/21177.visual-c-thread-sleep-vs-task-delay.aspx
I also agree efficiency is not paramount in this case.