Je viens de voir 3 routines concernant l'utilisation de TPL qui font le même travail; voici le code:
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();
}
Je ne comprends pas pourquoi MS donne 3 façons différentes pour exécuter des travaux en TPL parce qu'ils travaillent tous les mêmes: Task.Start()
, Task.Run()
et Task.Factory.StartNew()
.
Dites - moi, sont Task.Start()
, Task.Run()
et Task.Factory.StartNew()
tous utilisés dans le même but ou ont-ils une signification différente?
Quand doit-on utiliser Task.Start()
, quand doit-on utiliser Task.Run()
et quand doit-on utiliser Task.Factory.StartNew()
?
S'il vous plaît, aidez-moi à comprendre leur utilisation réelle selon le scénario en détail avec des exemples, merci.
Task.Run
- peut-être que cela répondra à votre question;)