Hãy xem xét đoạn mã này:Tại sao Task.Factory.StartNew trả về ngay lập tức trong khi Task.Run không?
Task[] tasks = new Task[4];
for (var i = 0; i < tasks.Length; ++i) {
tasks[i] = Task.Run(async() =>
{
await Task.Delay(4000);
});
}
for (var i = 0; i < tasks.Length; ++i)
await tasks[i];
Console.WriteLine("Done!");
Điều này hoạt động như mong đợi, lấy 4,000 mili giây để thực thi. Tuy nhiên, nếu tôi trao đổi Task.Run
với Task.Factory.StartNew
thì chỉ mất 0,006 ms!
Mọi người có thể giải thích lý do không?