2012-09-10 28 views
6

Tôi đang mã hóa ứng dụng ASP.NET MVC 3. Khi người dùng đăng nhập, tôi cần kiểm tra hệ thống từ xa và nhận dữ liệu mới nhất cho người dùng đó từ hệ thống. Nhiệm vụ này sẽ mất khoảng 15 giây.Chạy tác vụ nền ngắn ngủi từ MVC

Người dùng có thể nhập ứng dụng của tôi ngay sau khi đăng nhập của họ (không phải đợi 15 giây cho cuộc gọi từ xa!). Khi cuộc gọi từ xa hoàn tất, thông tin người dùng cục bộ sẽ được cập nhật.

Tôi đã nghĩ đến việc sử dụng chuỗi để thực hiện việc này, tạo chuỗi sau khi họ đăng nhập và để cho nó chạy khóa học của nó. Tuy nhiên, sau khi đọc xung quanh, tôi quan tâm đến việc tái chế vv khi làm việc với các chủ đề trong MVC. Tôi sẽ sử dụng một bộ điều khiển async, nhưng tôi không cần phải phản hồi cho người dùng trạng thái của quá trình nền này. Tôi có quyền được quan tâm về chủ đề, ngay cả khi họ là ngắn ngủi?

+0

Hãy xem [câu hỏi tương tự] (http://stackoverflow.com/a/11337836/706456) – oleksii

Trả lời

5

"... lo ngại về tái chế ..."

"... không cần phải thông tin phản hồi cho người dùng trạng thái ..."

".. .short-lived ... "

3 lý do bạn nên sử dụng ThreadPool.QueueUserWorkItem.

+0

Đây chính xác là những gì tôi cần. Tôi muốn sự tự tin để ném các lệnh tại một sợi và nhận được trên với trở về một trang. – matt

0

Không sử dụng "chuỗi" trong ứng dụng web. Hãy để máy chủ xử lý việc này bằng cách sử dụng các cuộc gọi "không đồng bộ". Nếu không, bạn sẽ phải thiết lập một threadpool và que yêu cầu chậm.

+0

Tôi đã được ấn tượng chờ đợi/async không thực sự có nghĩa là để thực hiện các nhiệm vụ nền. (Trái ngược với việc thực hiện các luồng tuần tự liên quan đến các hoạt động dài hạn mà không bị chặn.) – millimoose

+0

Nó đang nhận dữ liệu từ máy chủ KHÁC. AsyncController sẽ thiết lập các yêu cầu sau đó phát hành thread cho đến khi có một phản ứng. – jrb

Các vấn đề liên quan