Làm cách nào để thực hiện một phương thức không đồng bộ từ bên trong một phương thức điều khiển và trả về một HttpStatusCodeResult (200), mà không có đại biểu async kết thúc sớm việc thực thi của nó?Làm cách nào để thực thi đúng cách Phương thức Async trong ASP.net MVC?
Tôi đang làm việc trên một ứng dụng asp.net và một trong những hành động của tôi điều khiển nhà của tôi mất nhiều thời gian để chạy (10-30 giây). Tôi muốn trả về một HttpStatusCodeResult (200) và tiếp tục chạy hàm của tôi. Các functoin không cần phải trả lại bất cứ điều gì, nhưng nó vẫn không thực sự là một trường hợp cháy và quên kể từ khi tôi trả lại một phản ứng với máy chủ ngay lập tức với HttpStatusCodeResult
.
Tôi đã thử sử dụng các đại biểu, nhưng có vẻ như một khi tôi trả lại mã trạng thái từ hành động, đại biểu sẽ ngừng thực thi. Một tùy chọn khác là tạo một dịch vụ cửa sổ nhưng điều đó sẽ giống như sử dụng bazooka để tiêu diệt một con ruồi. Tôi nhận được rất ít yêu cầu để tài nguyên và hiệu suất không phải là vấn đề trong trường hợp của tôi. Tôi nghe nói ThreadPool.QueueUserWorkItem
là một tùy chọn, nhưng đó là lựa chọn phù hợp nhất cho trường hợp của tôi?
Đây có thể là đặt cược tốt nhất của bạn: [Sử dụng bộ điều khiển không đồng bộ trong ASP.NET MVC] (http://msdn.microsoft.com/en-us/library/ee728598.aspx) –
nhưng tôi nghĩ nó chỉ tối ưu hóa việc sử dụng của hồ bơi thread, tôi có nghĩa là tôi không thể trả lại mã httpstatus và tiếp tục thực hiện, kiểm tra _Converting Phương thức hành động đồng bộ để phương pháp hành động không đồng bộ_ phần –