"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > WPF में नॉन-डिस्पैचर थ्रेड से ऑब्जर्वेबल कलेक्शन को कैसे संशोधित करें?

WPF में नॉन-डिस्पैचर थ्रेड से ऑब्जर्वेबल कलेक्शन को कैसे संशोधित करें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:112

How to Modify an ObservableCollection From a Non-Dispatcher Thread in WPF?

"इस प्रकार का कलेक्शन व्यू डिस्पैचर थ्रेड से भिन्न थ्रेड से अपने सोर्स कलेक्शन में बदलाव का समर्थन नहीं करता है"

समस्या विवरण

एक डेटाग्रिड बाउंड एक एसिंक्रोनस रूप से पॉप्युलेट किए गए ऑब्जर्वेबल कोलेक्शन में यह कहते हुए एक त्रुटि उत्पन्न होती है कि गैर-डिस्पैचर से सोर्स कोलेक्शन में परिवर्तन की अनुमति नहीं है thread.

Solution

समस्या थ्रेड एफ़िनिटी से उत्पन्न होती है। ऑब्जर्वेबल कोलेक्शन प्रारंभ में यूआई थ्रेड पर बनाया गया है, जिससे इसे केवल यूआई थ्रेड से एक्सेस किया जा सकता है। इसे एक अलग थ्रेड से संशोधित करने के लिए, प्रतिनिधि को यूआई डिस्पैचर पर रखा जाना चाहिए।

अपडेटेड व्यूमॉडल कोड

public void Load()
{
    matchList = new List();
    matchList = proxy.GetMatch().ToList();

    foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
    {
        App.Current.Dispatcher.Invoke((Action)delegate
        {
            _matchObsCollection.Add(match);
        });
    }
}

यूआई डिस्पैचर पर प्रतिनिधि को आमंत्रित करके, ऑब्जर्वेबलकलेक्शन में परिवर्धन को यूआई थ्रेड पर शेड्यूल किया जाता है, अपवाद को हल किया जाता है।

एन्हांस्ड बाइंडिंग और रिफ्रेश

एसिंक्रोनस के लिए डेटाग्रिड को बाइंडिंग और रीफ्रेश करने के लिए, अपने ViewModel गुणों पर INotifyPropertyChanged का उपयोग करने और इसे लागू करने पर विचार करें यूआई तत्वों को ताज़ा करने के लिए डिस्पैचर।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3