关于Task.Start(),Task.Run()和Task.Factory.StartNew()

我刚看到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给出了三种不同的方式在运行第三方物流工作,因为他们所有的工作一样的:Task.Start(),Task.Run()和Task.Factory.StartNew()。


告诉我,是Task.Start(),Task.Run()并且Task.Factory.StartNew()所有用于同一目的或者它们有不同的意义吗?


应该Task.Start()何时使用,何时应该使用Task.Run()何时使用Task.Factory.StartNew()?


请帮助我通过示例非常详细地了解它们的实际用法,谢谢。


富国沪深
浏览 4874回答 2
2回答

Qyouu

你说“不要创建一个任务并调用Start()”将我重定向到任何可能由Task.Start()引起的好的写入。我需要细节,因为你说要避免它。谢谢你的答复。
打开App,查看更多内容
随时随地看视频慕课网APP