Xem xét các phương pháp này hai bộ điều khiển:Các vấn đề có thể xảy ra nếu chúng ta chờ đợi hoạt động async dài trong ASP.NET Core?
public async Task DoAsync() {
await TaskThatRunsFor10MinutesAsync().ConfigureAwait(false);
}
public void DoWithTaskRunAndReturnEarly() {
Task.Run(() => TaskThatRunsFor10MinutesAsync());
}
Hãy nói rằng về phía khách hàng, chúng tôi không quan tâm đến phản ứng. Chúng tôi có thể chờ cho đến khi hoàn thành, chúng tôi có thể từ bỏ người dùng nửa chừng để làm mới trang - nhưng không quan trọng là DoWithTaskRunAndReturnEarly
sẽ trả về sớm hơn.
Có sự khác biệt quan trọng giữa phía hai máy chủ đó, ví dụ: về độ tin cậy, thời gian chờ, v.v ...? ASP.NET lõi có bao giờ hủy bỏ các chủ đề trên một thời gian chờ?
Nếu yêu cầu hủy bỏ CT sẽ đến trong v2, CT (phương thức được chuyển đến phương thức điều khiển) làm gì hôm nay? –
Nó được trigged nếu khách hàng gửi một RST trong Kestrel hoặc nếu bạn trực tiếp gọi HttpContext.Abort – davidfowl