我有方法:
private static void Method()
{
    Console.WriteLine("Method() started");
    for (var i = 0; i < 20; i++)
    {
        Console.WriteLine("Method() Counter = " + i);
        Thread.Sleep(500);
    }
    Console.WriteLine("Method() finished");
}
我想在新任务中启动此方法。我可以像这样开始新任务
var task = Task.Factory.StartNew(new Action(Method));
或这个
var task = Task.Run(new Action(Method));
但是Task.Run()和之间有什么区别Task.Factory.StartNew()。创建Task实例后,他们两个都立即使用ThreadPool并启动Method()。什么时候应该使用第一个变量,什么时候应该使用第二个变量?
StartNew默认情况下使用TaskScheduler.Current,它可能是线程池,也可能是UI线程。