2011-02-08 43 views
5

Tôi có một ứng dụng MonoTouch sử dụng ThreadPool để quản lý số lượng chủ đề nền. Nếu tôi có ThreadPool đẻ trứng ra khỏi một chủ đề và trong thread, nó sẽ kích hoạt một yêu cầu web Async, thì yêu cầu web sẽ sinh ra một chuỗi thứ hai? nếu vậy, sẽ thread đó được đưa ra khỏi ThreadPool?ThreadPool.QueueUserWorkItem với Cuộc gọi không đồng bộ trong chủ đề

Phương pháp hay nhất cho một điều như vậy là gì? Nếu yêu cầu web chỉ là một cuộc gọi đồng bộ, để giảm số lượng chuỗi hiện tại?

ThreadPool.QueueUserWorkItem(callback => 
{ 
    WebClient client = new WebClient(); 
    client.DownloadStringAsync(new Uri("http://www.google.com/")); 
    client.DownloadStringCompleted += (a,b) => Console.WriteLine("Done"); 
}); 
+1

Có, nó sẽ được lấy từ hồ bơi chủ đề, có nguy cơ cạn kiệt. Điểm không đồng nhất đôi trong trường hợp cụ thể này là gì? – bzlm

+1

Bạn có nghĩa là bạn muốn [đa nhiệm trong khi đa nhiệm?] (Http://encyclopediadramatica.com/Sup_Dawg) –

+0

Cảm ơn bạn đã trả lời nhanh. Triển khai hiện tại của tôi sử dụng một lớp tiện ích mà tôi đã xây dựng đã kích hoạt một webreqeust không đồng bộ, và bây giờ tôi đang giới thiệu một ThreadPool để quản lý các sự kiện cảm ứng và chỉ nhận ra rằng tôi sẽ thực hiện một sự đồng bộ kép. Tôi muốn hiểu những vấn đề lâu dài mà tôi có thể gặp phải. Sự kiệt sức dường như là hiển nhiên nhất. –

Trả lời

0

Nếu bạn sắp kết thúc cuộc gọi lại trên sê-ri của mình ngay sau đó, như bạn đã thấy ở đó, không có vấn đề gì. Bạn chỉ cần thay thế một dòng thời gian cuộc gọi của threadpool bằng một dòng thời gian khác.

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