एक डेटाग्रिड बाउंड एक एसिंक्रोनस रूप से पॉप्युलेट किए गए ऑब्जर्वेबल कोलेक्शन में यह कहते हुए एक त्रुटि उत्पन्न होती है कि गैर-डिस्पैचर से सोर्स कोलेक्शन में परिवर्तन की अनुमति नहीं है thread.
समस्या थ्रेड एफ़िनिटी से उत्पन्न होती है। ऑब्जर्वेबल कोलेक्शन प्रारंभ में यूआई थ्रेड पर बनाया गया है, जिससे इसे केवल यूआई थ्रेड से एक्सेस किया जा सकता है। इसे एक अलग थ्रेड से संशोधित करने के लिए, प्रतिनिधि को यूआई डिस्पैचर पर रखा जाना चाहिए।
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