同じ仕事をするTPLの使用に関する3つのルーチンを見たところです。ここにコードがあります:
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に彼らなぜならすべての作業をジョブを実行するには3種類の方法を与える理由を理解していない:Task.Start()
、Task.Run()
とTask.Factory.StartNew()
。
教えてください、ありTask.Start()
、Task.Run()
そしてTask.Factory.StartNew()
すべて同じ目的のために使用されるか、またはそれらは異なる意味を持っていますか?
いつ使うべきかTask.Start()
、いつ使うべきか、いつ使うTask.Run()
べきTask.Factory.StartNew()
か?
シナリオごとの実際の使用法を、例を挙げて非常に詳しく理解できるように私に助けてください、ありがとうございます。
Task.Run
-多分これは、あなたの質問にお答えします。)