ArcObjects Addin में धीमी गति से चल रहा है?


9

मैंने एक क्लास लाइब्रेरी बनाई है जो कुछ जियोप्रोसेसिंग करती है। Addin एक वर्ग को कॉल करता है जो एक async प्रक्रिया है। मैंने यह सुनिश्चित कर लिया है कि धागा STA है और आर्कोबेजेक्ट्स थ्रेड सेफ हैं (यानी एडिन से पास नहीं हुए हैं)। सभी आर्कोबजेक्ट्स धागे के भीतर बनाए गए हैं।

क्योंकि यह एक क्लास लाइब्रेरी है जिसे मैंने इसे winforms UI में और एडिन के रूप में भी लपेटा है। कोड के दोनों सेट बिल्कुल समान हैं और सटीक समान डेटा का उपयोग करके परीक्षण किए गए थे। Winforms और addin दोनों वांछित परिणामों के साथ कोड को पूरा करते हैं और कोई मेमोरी लीक स्पष्ट नहीं है। एडिन के मामले के लिए इस बिंदु पर नक्शा अवधि के साथ कोई इंटरैक्शन नहीं है और वाइनफॉर्म कोड में कोई भी मैपिंग या प्रदर्शन तत्व नहीं हैं।

केवल UI अद्यतन एडिन और UI दोनों में प्रगति संवाद का अद्यतन हैं। Addin एक dockable विंडो (उपयोगकर्ता नियंत्रण यूआई) का उपयोग कर रहा है।

मुद्दा मैं देख रहा हूँ जब लाइब्रेरी को एडिन से पुकारा जाता है, तो कोड निष्पादन 5 गुना धीमा होता है, उसी कोड की तुलना में जिसे winforms एप्लिकेशन के माध्यम से बुलाया जाता है।

कोई भी विचार जहाँ मैं देख सकता हूँ कि ऐसा क्यों हो रहा है?


आप किसी भी arcobjects उपयोग कर रहे हैं एकमात्र ?
कर्क कुक्केंडल

हां, सूची पर एक त्वरित नज़र डालें और मैं कुछ कार्यक्षेत्र वस्तुओं का उपयोग कर रहा हूँ ताकि आर्कबैप के अपने फीचरक्लास इंडिपेंडेंट को खोल सकें ताकि वे धागे के भीतर निर्मित हों। मैं दो कार्यक्षेत्रों का निर्माण कर रहा हूं (मेरे इनपुट और आउटपुट के लिए) फिर स्थानीय रूप से एक इनममोरीवर्कस्पेस का उपयोग करके डेटा को लूप करना और कैशिंग करना जो मैं बनाने के लिए एक कारखाने का उपयोग करता हूं। क्या मुझे केवल एक बार inmemoryworkspacefactory बनाना चाहिए? मुझे यह उल्लेख करना चाहिए कि कोड विफल नहीं होता है और यह केवल तब ही धीमा होता है जब ऐडिन के भीतर निष्पादित किया जाता है।
जस्टिन कैरिकिक

क्या आप उपयोग कर रहे हैं Activator.CreateInstance, या साथ बना रहे हैं new?
किर्क कुएकेन्डल

मैं नए का उपयोग कर रहा हूं (या था)। मैं Activator.CreateInstance पद्धति को आज़माने के लिए अब अपडेट कर रहा हूँ।
जस्टिन कैरासिक

मैंने कोड को अपडेट किया (उस बिंदु को इंगित करने के लिए धन्यवाद) लेकिन अपडेट के साथ वास्तविक अंतर नहीं देखा।
जस्टिन कैरासिक

जवाबों:


1

दोनों संस्करणों की तुलना करते समय, आप केवल जियोप्रोसेसिंग समय से अधिक समय ले सकते हैं।

शायद आपके स्टैंडअलोन एप्लिकेशन में कुछ आरंभीकरण प्रक्रियाएं चल रही हैं जो पहले से ही स्टार्टअप पर आर्कप्स में प्रदर्शन कर रहे हैं जैसे कि MxDocument ऑब्जेक्ट का निर्माण, लाइसेंस चेकआउट, खरोंच GDB का निर्माण, आदि।

ArcMap और आपके डेस्कटॉप एप्लिकेशन में उपयोग किए जाने वाले .NET फ्रेमवर्क संस्करण में भी अंतर हो सकता है (हालांकि मुझे नहीं लगता कि यह 5x मंदी का कारण बनता है)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.