[c#] En cuanto al uso de Task.Start (), Task.Run () y Task.Factory.StartNew ()



Answers

Question

Acabo de ver 3 rutinas relacionadas con el uso de TPL que hace 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 ofrece 3 formas diferentes de ejecutar trabajos en TPL porque todos funcionan igual: Task.Start() , Task.Run() y Task.Factory.StartNew() .

Dígame, ¿ Task.Start() , Task.Run() y Task.Factory.StartNew() usan con el mismo propósito o tienen diferente significado?

Cuando uno debería usar Task.Start() , cuando Task.Run() y cuando uno debería usar Task.Factory.StartNew() ?

Ayúdenme a comprender su uso real según el escenario en gran detalle con ejemplos, gracias.




Links