मेरे पास एक WPF एप्लिकेशन (.NET 4) है जिसमें मुख्य विंडो है, और उस मुख्य विंडो के अंदर कई छोटे UserControls
दिखाते हैं। उपयोगकर्ता द्वारा किए गए विभिन्न कार्यों को UserControls
का कारण बनता है जो विभिन्न डेटा के साथ विभिन्न अन्य नियंत्रणों द्वारा प्रतिस्थापित करने के लिए प्रदर्शित होते हैं।WPF प्रारंभिक कॉम्पोनेंट प्रदर्शन समस्याओं
हालांकि, इन नियंत्रणों को स्विच करते समय मैं प्रदर्शन समस्याओं में भाग रहा हूं। नियंत्रण लोड करते समय WPF प्रेषक धागा 100% CPU पर जाता है। पुरानी मशीनों पर, या बड़ी संख्या में नियंत्रणों के साथ, इसका परिणाम 30 सेकंड तक लॉक होने के लिए दिखाई दे रहा है!
रूपरेखा इंगित करता है कि लगभग सभी इस CPU समय के सभी विभिन्न UserControls
के विभिन्न InitializeComponent
तरीकों बुला खर्च किया जाता है - कोई भी नियंत्रण किसी भी अन्य की तुलना में बेहद बदतर हो गया लगता है, वे सब 0.2 और 0.5 के बीच सेकंड लेने के लिए लग रहे हैं (पर एक तेज प्रोसेसर और अच्छे ग्राफिक्स कार्ड के साथ मेरी देव मशीन)।
जहां तक मुझे पता है, InitializeComponent
वह जगह है जहां WPF वास्तव में संकलित xaml को स्मृति में लोड करता है।
मुझे यहां क्या करना है इसके लिए एक नुकसान हुआ है। मैं पृष्ठभूमि थ्रेड पर चीजों को पूर्व-प्रारंभ करना चाहता हूं, लेकिन सभी WPF नियंत्रणों को डिस्पैचर थ्रेड पर बनाया और उपयोग किया जाना चाहिए, इसलिए मुझे नहीं लगता कि यह संभव है।
अन्यथा ऐसा लगता है कि मेरे सभी एक्सएमएल को हटाने के लिए मेरे पास केवल एक ही विकल्प हैं ??
किसी भी मदद की बहुत सराहना की
किया जाएगा
आपके ऐप (विशिष्ट विवरण + कोड) के बारे में और जानने के बिना, मैं केवल कल्पना कर सकता हूं कि आपके पास या तो बड़ी संख्या में उपयोगकर्ता नियंत्रण (+50) और/या बहुत भारी डेटा बाइंडिंग हैं। तो एकमात्र जवाब आपके आवेदन तर्क को फिर से डिजाइन करना होगा। आपको यह भी समझना चाहिए कि जब बड़ी मात्रा में नियंत्रण/डेटा की बात आती है तो डब्ल्यूपीएफ बिल्कुल बकवास होता है, क्योंकि यह बहुत ही अप्रचलित है (मुझे लगता है कि यह ढांचे का उच्च स्तर है)। शायद अपने ऐप के लिए WinForms को आजमाएं (जो थोड़ा बेहतर है) या देशी सी ++/डायरेक्टएक्स (एला फोटोशॉप, ऑटोकैड स्टाइल) में सब कुछ लिखें – Marko
http://jeremiahmorrill.wordpress.com/2011/02/14/a- क्रिटिकल -डिप-डाइव-इन-द-डब्ल्यूपीएफ-रेंडरिंग-सिस्टम/- मुझे लगता है कि नियंत्रण लोड हो रहे हैं, प्रतिपादन उत्पन्न हो सकता है और शायद कैश किया जा सकता है। यह PIX (एक WPF perf टूल) का उल्लेख करता है जिसे आप आजमा सकते हैं। – gbjbaanb