là gì tôi có Phương pháp:sự khác biệt giữa Task.Run() và Task.Factory.StartNew()
private static void Method()
{
Console.WriteLine("Method() started");
for (var i = 0; i < 20; i++)
{
Console.WriteLine("Method() Counter = " + i);
Thread.Sleep(500);
}
Console.WriteLine("Method() finished");
}
Và tôi muốn bắt đầu phương pháp này trong một nhiệm vụ mới. tôi có thể bắt đầu nhiệm vụ mới như thế này
var task = Task.Factory.StartNew(new Action(Method));
hay này
var task = Task.Run(new Action(Method));
Nhưng có bất kỳ sự khác biệt giữa Task.Run()
và Task.Factory.StartNew()
. Cả hai người trong số họ đang sử dụng ThreadPool và bắt đầu Method() ngay lập tức sau khi tạo cá thể của Task. Khi chúng ta nên sử dụng biến thể đầu tiên và khi thứ hai?
Thực ra, StartNew không phải sử dụng ThreadPool, xem blog tôi đã liên kết đến trong câu trả lời của tôi. Vấn đề là 'StartNew' theo mặc định sử dụng' TaskScheduler.Current' có thể là nhóm luồng nhưng cũng có thể là chuỗi giao diện người dùng. –
Có thể trùng lặp của [Về việc sử dụng Task.Start(), Task.Run() và Task.Factory.StartNew()] (https://stackoverflow.com/questions/29693362/regarding-usage-of-task-start -task-run-and-task-factory-startnew) –