Я только что видел 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
- может быть, это ответит на ваш вопрос;)