Saya baru saja melihat 3 rutinitas mengenai penggunaan TPL yang melakukan pekerjaan yang sama; ini kodenya:
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();
}
Aku hanya tidak mengerti mengapa MS memberikan 3 cara yang berbeda untuk menjalankan pekerjaan di TPL karena mereka semua bekerja sama: Task.Start()
, Task.Run()
dan Task.Factory.StartNew()
.
Katakan, apakah Task.Start()
, Task.Run()
dan Task.Factory.StartNew()
semua digunakan untuk tujuan yang sama atau apakah mereka memiliki arti yang berbeda?
Kapan sebaiknya satu digunakan Task.Start()
, kapan harus digunakan Task.Run()
dan kapan harus digunakan Task.Factory.StartNew()
?
Tolong bantu saya untuk memahami penggunaan sebenarnya sesuai skenario dengan sangat detail dengan contoh, terima kasih.
Task.Run
- mungkin ini akan menjawab pertanyaan Anda;)