2011-02-08 13 views
5

मेरे पास एक मोनो टच एप्लिकेशन है जो पृष्ठभूमि थ्रेड की संख्या प्रबंधित करने के लिए थ्रेडपूल का उपयोग करता है। अगर मेरे पास थ्रेडपूल थ्रेड से बाहर है और धागे के भीतर है, तो यह एसिंक वेब अनुरोध को सक्रिय करता है, क्या वेब अनुरोध दूसरे थ्रेड से निकल जाएगा? यदि हां, तो क्या थ्रेड थ्रेडपूल से हटाया जाएगा?ThreadPool.QueueUserWorkItem थ्रेड के भीतर Async कॉल के साथ

ऐसी चीज के लिए सबसे अच्छा अभ्यास क्या है? वर्तमान थ्रेड गिनती को कम करने के लिए, वेब अनुरोध सिर्फ सिंक्रोनस कॉल होना चाहिए?

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

हां, इसे थ्रेड पूल से लिया जाएगा, थकावट को खतरे में डाल दिया जाएगा। इस विशेष परिदृश्य में डबल-एसिंक का क्या मतलब है? – bzlm

+1

आपका मतलब है कि आप [मल्टीटास्क करते समय मल्टीटास्क करना चाहते हैं?] (Http://encyclopediadramatica.com/Sup_Dawg) –

+0

त्वरित उत्तर के लिए धन्यवाद। मेरा वर्तमान कार्यान्वयन एक यूटिलिटी क्लास का उपयोग करता है जो मैंने पहले से ही एसिंक वेबरेक्स्ट को फायर कर दिया है, और अब मैं टच इवेंट प्रबंधित करने के लिए थ्रेडपूल पेश कर रहा हूं, और मुझे एहसास हुआ कि मैं डबल एसिंक कर रहा हूं। मैं उन दीर्घकालिक समस्याओं को समझना चाहता हूं जो मैं चला सकता हूं। थकावट सबसे स्पष्ट प्रतीत होता है। –

उत्तर

0

तुम ठीक कह रहे बाद में अपने ThreadPool कॉलबैक न खत्म होने वाली हैं, जैसे you've वहाँ से पता चला है, वहाँ एक समस्या हो shouldn`t। आप बस एक थ्रेडपूल कॉल टाइमलाइन को दूसरे के साथ बदल रहे हैं।

संबंधित मुद्दे