Щойно я побачив 3 підпрограми щодо використання TPL, які виконують ту саму роботу; ось код:
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Create a task and supply a user delegate by using a lambda expression.
Task taskA = new Task( () => Console.WriteLine("Hello from taskA."));
// Start the task.
taskA.Start();
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Define and run the task.
Task taskA = Task.Run( () => Console.WriteLine("Hello from taskA."));
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Better: Create and start the task in one operation.
Task taskA = Task.Factory.StartNew(() => Console.WriteLine("Hello from taskA."));
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
Я просто не розумію , чому MS дає 3 різних способи запуску завдань в TPL , оскільки всі вони працюють однаково: Task.Start(), Task.Run()і Task.Factory.StartNew().
Скажіть, чи є Task.Start(), Task.Run()і Task.Factory.StartNew()всі вони використовуються з однією метою або вони мають різне значення?
Коли слід використовувати одне Task.Start(), коли слід застосовувати Task.Run()і коли слід використовувати Task.Factory.StartNew()?
Будь ласка, допоможіть мені зрозуміти їх реальне використання відповідно до сценарію, докладно з прикладами, дякую.
Task.Run- можливо, це відповість на ваше запитання;)