我只看到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()
?
请通过示例帮助我详细了解它们根据场景的实际用法,谢谢。
Task.Run
-也许这会回答您的问题;)