मैं अब मीडिया प्लेयर बना रहा हूं .. मैंने गानों आदि (कुछ डब्लूएमपी रीयलटाइम सर्च जैसे कुछ) खोजने के लिए रीयलटाइम सर्च फ़ंक्शन जोड़ा है, यानी जब आप कीवर्ड दर्ज करते हैं तो खोज होती है।अलग यूआई थ्रेड पर डब्ल्यूपीएफ नियंत्रण?
खोज प्रक्रिया के दौरान, डेटाबेस तक पहुंचने और एक आईनेमरेबल लोड करने के लिए बैकग्राउंड प्रोसेस के माध्यम से किसी अन्य थ्रेड पर किया जाता है। UI को UIElement के प्रेषक का आह्वान करके अद्यतन किया जाता है।
यह प्रक्रिया अपेक्षाकृत तेज़ है, लेकिन जब भी आप टेक्स्टबॉक्स में खोजशब्दों को दर्ज करते हैं, तो वहां एक छोटी सी अंतराल प्रतीत होती है, यह सूचीबॉक्स के कारण है। इटम्स सोर्स अपडेटिंग में कुछ समय लगता है। यानी आप "एडेले" खोजना चाहते हैं, जब आप "ए" टाइप करते हैं, तो खोज फ़ंक्शन "ए" के लिए परिणाम लोड करता है, लेकिन जैसा कि हम पूरे शब्द "एडेल" टाइप कर रहे हैं, यह कुछ समय " डी "" ई "" एल "" ई "और इन अक्षरों के बीच थोड़ा सा अंतराल है।
इस खोज प्रक्रिया के दौरान, जब मैं यूआई को अपडेट करना बंद करता हूं तो खोज प्रक्रिया बहुत चिकनी लगती है, यह केवल मेरे लिए है कि लिस्टबॉक्स थ्रेड को लॉक कर रहा है, इसलिए शेष खिलाड़ी का यूआई वहां फंस गया है जबकि सूचीबॉक्स है इसके प्रसंस्करण के साथ किया।
तो मुझे विश्वास है कि अगर मैं लिस्टबॉक्स नियंत्रण को किसी अन्य यूआई थ्रेड में डाल सकता हूं, तो मैं सूची बॉक्स को लोड करने के लिए किए गए समय के बावजूद खिलाड़ी के चिकनी प्रवाह को बनाए रख सकता हूं। एफवाईआई: डाटा विरूट्यूलाइजेशन & लिस्टबॉक्स में यूआई वर्चुअलाइजेशन काम कर रहा है
मैं लिस्टबॉक्स नियंत्रण को किसी अन्य यूआई थ्रेड पर कैसे रख सकता हूं? WPF, सी #
अग्रिम :)
प्रभावी रूप से आप नहीं कर सकते ... कम से कम किसी भी व्यवहार्य तरीके से मैंने देखा नहीं है। – Servy
.NET 4.5 का उपयोग कर?बाइंडिंग पर अब एक अच्छी देरी संपत्ति है जो आपके लिए एक आसान जीत हो सकती है, मूल रूप से इसे 100ms की तरह कुछ सेट करें और यह केवल बाइंडिंग अपडेट करेगा यदि उपयोगकर्ता उस अवधि के लिए टाइपिंग बंद कर देता है (या एंटर या टेक्स्टबॉक्स दबाता है फोकस खो देता है) – Andy
एक है, और केवल एक, यूआई थ्रेड। –