ArcObjects ทำงานใน Addin ช้าลงไหม


9

ฉันได้สร้างห้องสมุดคลาสซึ่งใช้กระบวนการทางภูมิศาสตร์ Addin เรียกคลาสที่เป็นกระบวนการอะซิงก์ ฉันได้ทำให้แน่ใจว่าด้ายเป็น STA และ arcobjects เป็นด้ายปลอดภัย (เช่น. ไม่ผ่านจาก addin) arcobject ทั้งหมดถูกสร้างขึ้นภายในเธรด

เพราะนี่คือห้องสมุดชั้นเรียนฉันห่อมันไว้ใน winforms UI และยังเป็นส่วนเสริม รหัสทั้งสองชุดนั้นเหมือนกันทุกประการและทำการทดสอบโดยใช้ข้อมูลเดียวกันที่แน่นอน ทั้ง winforms และ addin กรอกรหัสด้วยผลลัพธ์ที่ต้องการและไม่มีหน่วยความจำรั่ว สำหรับกรณีของ addin ไม่มีการโต้ตอบกับช่วงเวลาของแผนที่ ณ จุดนี้และไม่มีการแมปหรือองค์ประกอบการแสดงผลในรหัส winforms

การอัพเดต UI เพียงอย่างเดียวคือการอัพเดทของกล่องโต้ตอบความคืบหน้าในทั้ง addin และ UI Addin กำลังใช้งานหน้าต่างที่สามารถเชื่อมต่อได้ (การควบคุมของผู้ใช้ UI)

ปัญหาที่ฉันเห็นคือเมื่อมีการเรียกไลบรารี่จาก addin การประมวลผลโค้ดช้ากว่ารหัสเดียวกัน 5 เท่าที่เรียกใช้ผ่านแอปพลิเคชัน winforms

ความคิดใด ๆ เกี่ยวกับที่ฉันอาจจะดูเพื่อดูว่าทำไมสิ่งนี้เกิดขึ้น?


คุณใช้ arcobjects singletonsไหม?
Kirk Kuykendall

ใช่ดูรายการอย่างรวดเร็วและฉันใช้วัตถุพื้นที่ทำงานไม่กี่รายการเพื่อเปิดฟีเจอร์คลาสของฉันที่เป็นอิสระจาก ArcMap เพื่อให้พวกเขาสร้างขึ้นภายในเธรด ฉันกำลังสร้างพื้นที่ทำงานสองรายการ (สำหรับอินพุตและเอาต์พุตของฉัน) จากนั้นวนลูปและแคชข้อมูลในเครื่องโดยใช้ inmemmoryworkspace ซึ่งฉันใช้โรงงานเพื่อสร้าง ฉันควรสร้างพื้นที่ทำงานในโรงงานหน่วยความจำเพียงครั้งเดียวหรือไม่? ฉันควรจะพูดถึงรหัสไม่ได้ล้มเหลวและช้าเมื่อดำเนินการภายใน addin
Justin Carasick

คุณสร้างโดยใช้Activator.CreateInstanceหรือกับnew?
Kirk Kuykendall

ฉัน (หรือถูก) ใช้ใหม่ ฉันกำลังอัปเดตทันทีเพื่อลองใช้วิธี Activator.CreateInstance
Justin Carasick

ฉันอัปเดตรหัส (ขอบคุณที่ชี้ให้เห็น) แต่ไม่เห็นความแตกต่างที่แท้จริงกับการอัปเดต
Justin Carasick

คำตอบ:


1

เมื่อเปรียบเทียบทั้งสองเวอร์ชันคุณอาจมีเวลามากกว่าเวลาประมวลผลทางภูมิศาสตร์

อาจมีบางขั้นตอนการเริ่มต้นทำงานในแอปพลิเคชันแบบสแตนด์อโลนของคุณซึ่งดำเนินการใน ArcMap เมื่อเริ่มต้นเช่นการสร้างวัตถุ MxDocument, การชำระเงินใบอนุญาต, การสร้างเกา GDB เป็นต้น

อาจมีความแตกต่างในรุ่น. NET Framework ที่ใช้ใน ArcMap และแอปพลิเคชันเดสก์ท็อปของคุณ (แม้ว่าฉันจะไม่เห็นว่าทำให้เกิดการชะลอตัว 5 เท่า)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.