سؤال

أنا أستخدم التحكم في خريطة gmap.net في تطبيق winform الخاص بي.إنه يعمل بشكل جيد على أجهزة كمبيوتر المطورين ولكنه يتعطل على أجهزة كمبيوتر العملاء على الرغم من أننا نقوم بتحديث جميع الأنظمة.ولكن بعد دقائق قليلة، تتعطل الخريطة وتعطي الخطأ التالي في إطار العملenter image description here

هل كانت مفيدة؟

المحلول

لقد استخدمت عنصر التحكم GMap.NET في الماضي، وواجهت مشكلة مماثلة.إذا حكمنا من خلال الصليب الأحمر الكبير في الخلفية، فقد تعطل عنصر تحكم GMap.NET أثناء تشغيله OnPaint طريقة.ال enumeration operation may not execute الخطأ الذي يتم طرحه عادةً ما يكون سببه تعديل مجموعة أثناء تكرارها:وهذا شيء لا تسمح به معظم أنواع المجموعات في إطار العمل.

فيه OnPaint الطريقة، يقوم عنصر التحكم GMap.NET بتكرار العديد من المجموعات، من بين أمور أخرى GMapControl.Overlays جمع و GMapOverlay.Markers, GMapOverlay.Routes و GMapOverlay.Polygons مجموعات من هذه التراكبات.في حالتي، كنت أقوم بتعديل هذه المجموعات من سلسلة رسائل في الخلفية بينما كان عنصر التحكم يحاول القيام برسمه، وبالتالي تكرار هذه المجموعات.وقد أدى ذلك إلى سلوك مشابه لما تلاحظه الآن.

لقد لاحظت أن GMap.NET يستخدم فئة مجموعة مخصصة تسمى ObservableCollectionThreadSafe<T> لجميع المجموعة المذكورة أعلاه.يشير الاسم إلى سلامة الخيط وبالتالي التسامح المحتمل مع التعديلات أثناء التكرار، لكنني لم أدرس تنفيذه لذا لست متأكدًا مما إذا كان هذا صحيحًا.ويبدو أن ملاحظاتي تشير إلى خلاف ذلك، ولكن هذا كان منذ فترة طويلة.

في ذلك الوقت، قمت بحل مشاكلي عن طريق استدعاء تعديلات على المجموعات المذكورة أعلاه لمؤشر ترابط واجهة المستخدم الرسومية (بسبب عدم وجود كائن مزامنة لقفله).يضمن الاستدعاء عدم إمكانية تشغيل التعديلات في وقت واحد مع ملف GMapControl.OnPaint الطريقة، والتي سيتم تشغيلها دائمًا على مؤشر ترابط واجهة المستخدم الرسومية أيضًا.

بالنسبة لسبب عدم ملاحظة هذا السلوك على جهازك:قد يكون هذا بسبب أسباب عديدة.ربما كنت محظوظًا، وربما كنت تستخدم التطبيق بشكل مختلف عن العميل، وما إلى ذلك.

ربما يمكنك الحصول على إجابات أكثر فائدة لسؤالك على منتدى المناقشات GMap.NET بالمناسبة.

نصائح أخرى

إصدار المستخدم ربما في عداد المفقودين نظام التشغيل Windows الخاص ب DLL كما هو جيد ك Core.dll هذا يعتمد على ما يعمل إصدار المستخدم من I.E Visual Studio أو تطبيق .NET المعبأ الذي تم تثبيته على جهاز الكمبيوتر الخاص بالمستخدم.إذا لم يكن الأمر كذلك، فقد يكون من الأفضل طلب المساعدة من منتديات GMAP.

لإصلاح ذلك، يجب عليك تعطيل إبطال أثناء تحديث أو إضافة علامات أو مضطرب:

giveacodicetagpre.

أنت تفتقد DLL المطلوب تشغيل التطبيق، أود أن أقترح نسخ مجلد BIN الكامل على النظام المحلي الخاص بك ثم حاول تشغيل التطبيق.إذا قمت بإنشاء حزمة MSI، فتأكد من إضافة التبعية بشكل صحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top