我剛剛看到有關3 TPL用法在做同樣的工作關於Task.Start(),Task.Run()和Task.Factory.StartNew()
這裏例程代碼
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給出了三種不同的方式在TPL運行的工作,因爲他們所有的工作一樣:Task.Start()
,Task.Run()
和Task.Factory.StartNew()
。
告訴我,是Task.Start()
,Task.Run()
和Task.Factory.StartNew()
都用於相同的目的或他們有不同的意義?
當一個應該使用Task.Start()
,當Task.Run()
和當一個應該使用Task.Factory.StartNew()
?
請幫助我瞭解他們的實際使用爲每個方案與實例非常詳細,謝謝。
有一個[舊文章說明的是,這裏](http://blogs.msdn.com/b/pfxteam/archive/2010/06/13/10024153.aspx)和[這裏用於較新的'Task.Run '](http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) - 也許這會回答你的問題;) – Carsten
[Here](http://stackoverflow.com/a/21427264/1768303)是Task_Start實際上有用的例子。 – Noseratio