2012-03-13 8 views
10

Tôi đang xây dựng một ứng dụng khá đơn giản, thực hiện một số HTTPWebRequests riêng biệt, mỗi HTTP trên bộ hẹn giờ riêng của chúng. Nó không có khả năng tôi sẽ cần phải có nhiều hơn 3 yêu cầu riêng biệt chạy cùng một lúc.Để tạo chủ đề hoặc không theo chủ đề

Nếu bộ hẹn giờ được kích hoạt trong khi một HTTPWebRequest khác đang diễn ra, điều gì sẽ xảy ra với sự kiện được kích hoạt bởi Tick Timer? Tôi có nên thêm Threading?

+1

tùy thuộc vào bộ hẹn giờ bạn sử dụng có thể có đa luồng (chắc chắn) - trong mọi trường hợp bạn có thể yêu cầu nhiều HTTP cùng một lúc (phụ thuộc vào cài đặt hệ thống - Tôi nghĩ là 8 hoặc cái gì đó) – Carsten

+0

bạn nghĩ về việc làm cho HttpWebRequest không đồng bộ? Tất cả các lợi ích mà không có tất cả các nhức đầu của chủ đề. –

Trả lời

6

Câu trả lời hầu như luôn luôn - không, không sử dụng chuỗi chỉ vì bạn có thể.

Cân nhắc thực hiện cuộc gọi không đồng bộ trước vì dễ viết mã đúng hơn. Nó có khả năng sử dụng tài nguyên hiệu quả hơn (vì các luồng không phải là tài nguyên không giới hạn) nếu bạn cần các đối số bổ sung.

Links:

+0

Đồng ý. Đặc biệt với C# 5.0, các cuộc gọi không đồng bộ rất dễ dàng. –

+0

Cuộc gọi Async dài/treo có chặn giao diện người dùng không? –

+0

Không, trả về cuộc gọi "ngay lập tức" và trình xử lý sự kiện/gọi lại của bạn sẽ không được gọi đến khi nhận được phản hồi/hết thời gian chờ. Bạn đã thực hiện "xử lý không đồng bộ" cho các sự kiện Timer, HttpRequest không đồng bộ sẽ giống nhau. –

1

Khi Timer.Tick cháy đó là xử lý sẽ được sắp xếp để thực hiện trong Chủ đề Pool và nhiều khả năng, thực hiện trong chủ đề khác .