2009-09-27 12 views
11

के लिए 1 थ्रेड्स मैंने अभी एक नया WPF एप्लिकेशन बनाया है जिसमें लगभग 5 विंडो हैं और Xceed डेटा ग्रिड का उपयोग करता है। कार्य प्रबंधक को देखने के बाद मैंने देखा कि इस छोटे से आवेदन में 1 9 धागे चल रहे थे।WPF अनुप्रयोग

क्या यह सही हो सकता है? मुझे उम्मीद है कि डब्ल्यूपीएफ ढांचे 2-3 धागे का उपयोग करें, लेकिन 19. नहीं। या क्या मैं कुछ गलत कर रहा हूं?

+0

यह बहुत कुछ है कि यह किसी भी विंडोज ऐप के साथ कैसे जाता है। यदि आप एक फॉर्म दिखा रहे हैं तो 10 लगभग न्यूनतम है। –

+0

10 धागे के साथ एक फॉर्म की आवश्यकता क्या है?इसे संदेश पंप के लिए एक की जरूरत है। के लिए दूसरे 9 क्या हैं? –

+0

यह बहुत अजीब लगता है। मैं पृष्ठभूमि श्रमिकों के लिए अतिरिक्त धागे के साथ एक नियमित ऐप के लिए दो धागे की उम्मीद करता हूं, लेकिन 1 9 नहीं। –

उत्तर

17

सबसे पहले, यह 19.

जब एक नहीं चल रहा है "नमस्कार, दुनिया!" डब्ल्यूपीएफ ऐप, मैं टास्क मैनेजर में 10 धागे देखता हूं। विजुअल स्टूडियो डीबगर का उपयोग करते हुए एक ही ऐप चलाते समय, यह 1 9 का उपयोग करता है। तो, सबसे पहले, इनमें से 9 कारक डीबगर से ओवरहेड के रूप में जोड़े गए हैं।

अब 10 के लिए।

एक MSDN पत्रिका लेख "Build More Responsive Apps With The Dispatcher" कहा जाता है के अनुसार, WPF दो धागे के साथ बाहर शुरू होता है:

सभी WPF अनुप्रयोगों दो महत्वपूर्ण सूत्र, एक साथ शुरू और एक प्रतिपादन यूजर इंटरफेस के प्रबंधन के लिए के लिए। प्रतिपादन धागा एक छिपा धागा है जो पृष्ठभूमि में चलता है, इसलिए का एकमात्र थ्रेड जो आप आमतौर पर यूआई थ्रेड के साथ सौदा करते हैं।

लेकिन this article के अनुसार, वहाँ सभी प्रबंधित क्षुधा में बुनियादी धागे के बहुत सारे, WPF या नहीं कर रहे हैं: finalizer, जीसी, डिबगर, टाइमर:

वहाँ नेट धागे की विभिन्न प्रकार हैं , थ्रेडपूल, प्राथमिक और पृष्ठभूमि धागे। लेकिन सभी .NET से संबंधित धागे प्रबंधित नहीं हैं।

दो WPF से के साथ शुरू, जीसी और finalizer में जोड़ने चार अप करने के लिए मिलता है। पांच पर जाने के लिए डीबगर थ्रेड में जोड़ें (सभी प्रबंधित ऐप्स में डिबगिंग नहीं होने पर भी एक है)। छः पर जाने के लिए टाइमर जोड़ें।

और, वीएस के बाहर शुरू करने के बाद मेरे डब्ल्यूपीएफ ऐप में डीबगर संलग्न करने से, मैं देख सकता हूं कि थ्रेड पूल में दो कार्यकर्ता धागे हैं। यह संभवतः न्यूनतम है। यह मेरा ऐप आठ तक प्राप्त करता है।

वहाँ दो मैं बिल्कुल के लिए खाते में नहीं कर सकते हैं, लेकिन वे इंटरॉप के लिए संभावना कॉम धागे (वे निश्चित रूप से प्रबंधित धागे नहीं हैं)। second article मैंने संदर्भित इन में से अधिक चर्चा की।

लेकिन यहां कहानी का वास्तविक नैतिकता है, उनके बारे में चिंता न करें। यदि एक वेनिला "हैलो, वर्ल्ड!" ऐप 10 का उपयोग करता है, यह आपकी आधार रेखा है। केवल इस थ्रेड के बारे में चिंता करें जो आप कम से कम बनाते हैं।

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