हाल ही में, मुझे अपने पीसीएल लिस्ट व्यू पर अनंत स्क्रॉलिंग/आलसी लोडिंग लागू करना पड़ा। मैं कोड के सबसे को अलग कर देंगे, लेकिन सबसे महत्वपूर्ण हिस्सा था:एक्समरिन फॉर्म: क्या अवलोकन योग्य को हमेशा यूआई थ्रेड में सेट/अपडेट किया जाना चाहिए?
ViewModel
var countries = // get countries
foreach (var country in countries)
{
// Countries is an ObservableCollection<Country>
Countries.Add(country);
}
यह एंड्रॉयड पर ठीक काम करने के लिए लग रहा था, लेकिन iOS पर, मैं सीमा अपवाद विशेष रूप से से बाहर हो रही रखा जब मैंने सूची को तेजी से स्क्रॉल किया। मेरे लिए फिक्स मुख्य कोड थ्रेड में इस कोड को चलाने के लिए था।
// wrap the code with this
Device.BeginInvokeOnMainThread(async() => {});
मेरा प्रश्न अब सभी दृश्य मॉडल सेवा है कि अद्यतन या एक नमूदार संग्रह सेट कॉल करना चाहिए हमेशा यूआई सूत्र में क्रियान्वित किया जा रहा है?
मेरे पास कई आदेश हैं जो Countries
सेट करें। वे यूआई थ्रेड ब्लॉक के बिना ठीक काम करने लगते हैं। मुझे केवल के साथ समस्याएं मिलीं जो ऊपर बताए गए आइटम जोड़ रही हैं।
क्या अवलोकन करने योग्य चयन हमेशा यूआई थ्रेड में सेट और अपडेट किया जाना चाहिए?
धन्यवाद। यदि ज़ैमरिन थ्रेड स्विचिंग को संभालता है, तो मुझे थ्रेड-सुरक्षित ऑब्जर्जेबल कोलेक्शन का उपयोग क्यों करना चाहिए? – Mark13426
क्योंकि ** आप ** इसे विभिन्न धागे से संशोधित करना चाहते हैं। – nicks
यह गारंटी है कि Xamarin यूआई थ्रेड पर यूआई ऑब्जेक्ट्स (वीएम में बदलावों के आधार पर) अपडेट करेगा। यद्यपि वीएम को उसी धागे पर अपडेट करने के लिए आप पर निर्भर है, या थ्रेड-सुरक्षित ऑब्जेक्ट्स का उपयोग करें। – nicks