Mam metodę:
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");
}
I chcę rozpocząć tę metodę w nowym zadaniu. Mogę rozpocząć nowe zadanie w ten sposób
var task = Task.Factory.StartNew(new Action(Method));
albo to
var task = Task.Run(new Action(Method));
Ale czy jest jakaś różnica między Task.Run()
i Task.Factory.StartNew()
. Obaj używają ThreadPool i uruchamiają Method () natychmiast po utworzeniu instancji zadania. Kiedy powinniśmy użyć pierwszego wariantu, a kiedy drugiego?
StartNew
domyślnie zastosowania,TaskScheduler.Current
które mogą być pulą wątków, ale mogą być także wątkiem interfejsu użytkownika.