ArcObjects Addin yavaş çalışıyor?


9

Bazı geoprocessing yapan bir sınıf kitaplığı oluşturduk. Eklenti, zaman uyumsuz bir süreç olan bir sınıfı çağırır. Ben iş parçacığı STA ve arcobjects iş parçacığı güvenli (yani. Addin geçti değil) sağladı. Tüm arcobjects iş parçacığı içinde oluşturulur.

Bu bir sınıf kütüphanesi olduğundan bir winforms UI ve ayrıca bir addin olarak sarılmış. Her iki kod kümesi de tamamen aynıdır ve test, aynı veriler kullanılarak gerçekleştirilmiştir. Hem winforms hem de addin kodu istenen sonuçlarla tamamlar ve bellek sızıntısı görülmez. Eklenti durumunda, bu noktada harita periyodu ile etkileşim yoktur ve winforms kodunda eşleme veya görüntüleme öğeleri de yoktur.

tek kullanıcı arayüzü güncellemeleri hem eklenti hem de kullanıcı arayüzünde bir ilerleme iletişim kutusunun güncellenmesidir. Eklenti takılabilir bir pencere kullanıyor (kullanıcı denetimi kullanıcı arabirimi).

Gördüğüm sorun kitaplık eklentiden çağrıldığında, kod yürütme winforms uygulaması denilen aynı koddan 5 kat daha yavaş.

Bunun neden olduğunu görmek için nereye bakacağım konusunda bir fikrin var mı?


Herhangi bir arcobjects singleton kullanıyor musunuz ?
Kirk Kuykendall

Evet, listeye hızlı bir bakış ve ArcMap bağımsız benim özelliklerini açmak için birkaç çalışma alanıfabrika nesneleri kullanıyorum böylece iplik içinde oluşturulur. Ben (benim giriş ve çıkış için) iki çalışma alanı fabrikaları oluşturmak ve daha sonra oluşturmak için bir fabrika kullanarak bir inmemmoryworkspace kullanarak veri döngü ve önbelleğe veriyorum. Bellek içi çalışma alanını sadece bir kez mi oluşturmalıyım? Kod başarısız ve sadece eklenti içinde yürütüldüğünde yavaş bahsetmeliyim.
Justin Carasick

Kullanarak mı Activator.CreateInstance, yoksa ile newmi yaratıyorsunuz ?
Kirk Kuykendall

Yeniyi kullanıyorum (veya kullanıyordum). Şimdi Activator.CreateInstance yöntemini denemek için güncelleştiriyorum.
Justin Carasick

Kodu güncelledim (bunu belirttiğiniz için teşekkürler), ancak güncelleme ile gerçek bir fark görmüyorum.
Justin Carasick

Yanıtlar:


1

Her iki sürümü karşılaştırırken, zamanlama yalnızca coğrafi işlem süresinden daha fazla olabilir.

Belki de bağımsız uygulamanızda çalışan ve başlatma sırasında ArcMap'te zaten gerçekleştirilen bazı başlatma prosedürleri vardır, örneğin MxDocument nesnesinin oluşturulması, lisans kontrolü, çizik GDB oluşturulması vb.

ArcMap ve masaüstü uygulamanızda kullanılan .NET Framework sürümünde de bir fark olabilir (5x yavaşlamaya neden olduğunu görmeme rağmen).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.