Acabo de ver 3 rutinas con respecto al uso de TPL que hacen el mismo trabajo; Aquí está el código:
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();
}
Simplemente no entiendo por qué MS da 3 métodos diferentes para ejecutar trabajos en TPL, ya que todo el trabajo de la misma: Task.Start()
, Task.Run()
y Task.Factory.StartNew()
.
Dime, están Task.Start()
, Task.Run()
y Task.Factory.StartNew()
todos utilizados para el mismo propósito o tienen un significado diferente?
¿Cuándo se debe usar Task.Start()
, cuándo se debe usar Task.Run()
y cuándo se debe usar Task.Factory.StartNew()
?
Ayúdenme a comprender su uso real según el escenario en gran detalle con ejemplos, gracias.
Task.Run
, tal vez esto responderá a su pregunta;)