Щойно я побачив 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
- можливо, це відповість на ваше запитання;)