Regarding usage of Task.Start() , Task.Run() and Task.Factory.StartNew()
Task.Run is a shorthand for Task.Factory.StartNew with specific safe arguments: Task.Factory.StartNew( action, CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default); It was added in .Net 4.5 to help with the increasingly frequent usage of async and offloading work to the ThreadPool. Task.Factory.StartNew (added with TPL in .Net 4.0) is much more robust. You should only use it if Task.Run isn’t … Read more