when you want your ui still responsive while calling function

reactive extension
when you want to tame and or filter events

TPL (Task Parallel Library)
when you have more that one methods that you think it can run together

TPL DataFlow
when you have bunch of parallel task which communicate to each other


async :
ui still responsive when you fetch data from database/web service
say goodbye to cursor wait and backgroundWorker

reactive extensions :
you want to handle only one click even user click xxx times
you want to throttle selected row changed event on data grid

parallel for, foreach, linq, task, use cpu to maximum
you have n number of pictures you want to change its color to grayscale,
and you want to process 2 pictures on the same time

TPL DataFlow:
WriteOnceBlock is the easiest stuff to understand,
you have 3 task, you only want one first task data which done