2009-03-26 13 views
6

मेरे पास फॉर्मों की एक श्रृंखला है और उनके बीच नेविगेट करें।एनईटी विनफॉर्म प्रतिपादन कैसे करें

प्रत्येक फॉर्म में नियंत्रण का एक सेट होता है जिसके लिए मैं SQLite डेटाबेस से गुण लोड करता हूं और यह लंबा (लगभग 1 एस) ऑपरेशन है जो उपयोगकर्ताओं को सबसे अच्छी भावना नहीं देता है क्योंकि फ़ॉर्म धीरे-धीरे खींचा जा रहा है।

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

क्या लोड किए गए डेटा को कैश करके पूरे एप्लिकेशन को तेज करने के अलावा कोई अच्छा समाधान है?

उत्तर

0

वीबी दिनों में वापस मैंने लॉकविंडो अपडेट एपीआई का उपयोग किया। चूंकि यह एक विंडो हैंडल लेता है, यह WinForms के साथ भी प्रयोग योग्य होना चाहिए। हालांकि, कभी कोशिश नहीं की।

4

इससे पहले कि आप उन्हें BeginUpdate() विधि फोन को पॉप्युलेट और जब किया फोन कई नियंत्रण के कथित प्रदर्शन, listviews, listboxes की तरह विशेष रूप से डेटा गहन लोगों, कॉम्बो बक्से आदि

तेजी लाने के लिए एक आसान तरीका नहीं है EndUpdate()। यह तब तक नियंत्रण को दोबारा अक्षम करता है जब तक कि आप इसे डेटा के साथ पॉप्युलेट नहीं कर लेते।

1

मुझे पता चला है कि कॉम्बो बॉक्स और सूची बॉक्स जैसे विनफॉर्म नियंत्रण लोड हो रहा है, जब वे तालिका के बजाय दृश्यों को इंगित कर रहे हैं तो बहुत तेज लोड हो जाते हैं, खासकर अगर आप नियंत्रण की तुलना में दृश्य को सीमित कर सकते हैं एक पूरी मेज को देखने के लिए।

2

क्षमा करें। यह थ्रेडिंग के लिए है। "क्रॉस-थ्रेड ऑपरेशन मुद्दे" अच्छी तरह परिभाषित हैं और उनके साथ निपटने के लिए सामान्य पैटर्न हैं। बस उन स्थानों को कम करें जहां धागे न्यूनतम से इंटरैक्ट करते हैं (इस मामले में, यह एक ही स्थान होगा - डेटा लोड होने के बाद) और यह छोटा हो जाता है।

कुछ वर्ग भी हैं जो Winforms ऐप में मल्टीथ्रेडिंग को अधिक आसान बनाते हैं, क्योंकि वे धागे के बीच बातचीत को दूर करते हैं। BackgroundWorker (इसके बारे में ब्लॉग पोस्ट से लिंक) आपके लिए एक और थ्रेड पर काम करेगा, और यूआई थ्रेड पर किसी ईवेंट को फायर करके किए जाने पर आपको सूचित करेगा। आपको किसी भी नुकसान के बिना मल्टीथ्रेडिंग के लाभ मिलते हैं।

0

इस लिंक में कुछ अच्छा समाधान है, जहां तक ​​मुझे लगता है कि BackgroundWorker प्रक्रिया में मदद करनी चाहिए। http://devcomponents.com/blog/?p=361

संबंधित मुद्दे