Task.Run — simple, recommended. StartNew — advanced, flexible.
Task.Run:
1// Simple2await Task.Run(() => {3 // CPU-bound work4 Thread.Sleep(1000);5});
Task.Factory.StartNew:
1Task.Factory.StartNew(() => {2 // Work3},4CancellationToken.None,5TaskCreationOptions.LongRunning,6TaskScheduler.Default7);
Key differences:
Best practice: