Starting with the .NET Framework 4.5, the Task::Run method is the recommended way to launch a compute-bound task. Use the StartNew method only when you require fine-grained control for a long-running, compute-bound task. This includes scenarios in which you want to control the following:
Parameter passing. The overloads of the Task::Run method do not allow you to pass a parameter to the task delegate. Overloads of the StartNew method do.
The task scheduler. The overloads of the Task::Run method use the default task scheduler. To control the task scheduler, call a StartNew overload with a scheduler parameter. For more information, see .