سؤال

أنا أعمل على تطبيق WPF الذي يعرض أحيانًا مشكلات غريبة ويبدو أنه كذلك يشنق في واجهة المستخدم.إنه أمر غير متسق، ويحدث في صفحات مختلفة، ولكنه يحدث كثيرًا لدرجة أنه يمثل مشكلة كبيرة.يجب أن أذكر أنه ليس تعليقًا حقيقيًا كما هو موضح أدناه.

كان أول ما فكرت به هو أن الرسوم المتحركة لبعض الأزرار كانت هي المشكلة نظرًا لاستخدامها في معظم الصفحات، ولكن بعد إزالتها، لا تزال حالات التوقف تحدث، على الرغم من أنها تبدو أقل تكرارًا.لقد حاولت اقتحام مصحح الأخطاء عند حدوث التعليق؛ولكن لا يوجد أبدًا أي رمز لعرضه.لا يوجد كود خاص بي قيد التشغيل.لقد لاحظت أيضًا أن "التعليق" لم يكتمل.لدي رمز يسمح لي بسحب النموذج (ليس له حدود أو عنوان) والذي يستمر في العمل.لدي أيضًا زر الإغلاق الخاص بي والذي يعمل عند النقر فوقه.يبدو أن النقر على الأزرار يعمل فعليًا أثناء تشغيل الكود الخاص بي، لكن واجهة المستخدم ببساطة لا يتم تحديثها أبدًا لإظهار صفحة جديدة.

أنا أبحث عن أي نصيحة أو أدوات أو تقنيات لتتبع هذه المشكلة الغريبة، لذا إذا كانت لديك أي أفكار على الإطلاق، سأكون ممتنًا لها كثيرًا.

يحرر:لقد حدث ذلك مرة أخرى، لذا هذه المرة عندما حاولت اقتحام مصحح الأخطاء اخترت "إظهار التفكيك".يقودني إلى MS.Win32.UnsafeNativeMethods.GetMessageW.يتبع تتبع المكدس:

[Managed to Native Transition]  

WindowsBase.dll!MS.Win32.UnsafeNativeMethods.GetMessageW(المرجع System.Windows.Interop.MSG msg، System.Runtime.InteropServices.HandleRef hWnd، int uMsgFilterMin، int uMsgFilterMax) + 0x15 بايت
windowsbase.dll! system.windows.threading.dispatcher.getMessage (ref system.windows.interop.msg msg ، system.intptr hwnd ، int minmessage ، int maxmessage) + 0x48 bytes windowsbase.dll! system.windows.threading.dispatcher. PushFrameImpl (System.windows.threading.dispatcherframe frame = {system.windows.threading.dispatcherframe}) + 0x8b bytes windowsbase.dll! System.Windows.Threading.dispatcher.pushframe (system.windows.threading.dispatcherframe)
WindowsBase.dll!System.Windows.Threading.Dispatcher.Run() + 0x4c بايت
PresentationFramework.dll!System.Windows.Application.RunDispatcher(تجاهل الكائن) + 0x1e بايت
العرض التقديمي framework.dll! system.windows.application.runinternal (system.windows.window window) + 0x6f bytes presentationframework.dll! system.windows.application.run (system.windows.window window) + 0x26 bytes presentationframework.dll! windows.application.run () + 0x19 بايت وينترغرين.
[تمكنت من الانتقال الأصلي]
mscorlib.dll! system.appdomain.nexecuteassembly (system.reflection.assembly Assembly ، String [] .runtime.hosting.manifestrunner.executeasassembly () + 0x84 bytes mscorlib.dll! system.runtime.hosting.applicationActivator.CreateInStance (System.ActivationContextContxt ، string [] ApplicationActivator.createInstance (System.ActivationContext ActivationContext) + 0xa bytes mscorlib.dll! system.activator.createinstance (System.ActivationContext ActivationContext) + 0x3e bytes
Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone() + 0x23 بايت
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(حالة الكائن) + 0x66 بايت
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext ExecutionContext، رد اتصال System.Threading.ContextCallback، حالة الكائن) + 0x6f بايت
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44 بايت

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

المحلول

حاول إزالة السلوك بلا حدود لنافذتك ومعرفة ما إذا كان ذلك مفيدًا.أيضًا، هل أنت BeginInvoc()'ing أو Invoc()'ing أي عمليات طويلة الأمد؟

شيء آخر يجب النظر إليه:عندما تقتحم الكود الخاص بك، حاول النظر إلى مواضيع أخرى غير موضوعك الرئيسي.ربما يقوم أحدهم بحظر مؤشر ترابط واجهة المستخدم.

نصائح أخرى

قد يكون تطبيق WPF الخاص بك معلقًا بسبب مشكلات في الأداء.جرب استخدام ثقب لمعرفة ما إذا كان لديك أي أجزاء تم عرضها كبرنامج أو ما إذا كان تطبيقك يستخدم الكثير من ذاكرة الوصول العشوائي للفيديو.

إحدى الأدوات الرائعة هي تجسس.من الرائع حقًا النظر إلى كائنات WPF التي يتم عرضها على الشجرة المرئية في وقت معين.لست متأكدًا من مدى فائدة ذلك، ولكن من المحتمل أنك تقوم بتشويش سلسلة واجهة المستخدم بالكثير من الأشياء الإضافية التي يتعين عليها القيام بها.قد يكون Snoop قادرًا على مساعدتك في تعقب ما يظهر على الشاشة لإعطائك فكرة عما تبحث عنه.

لقد قمت بإزالة السلوك بلا حدود كما اقترح بوب كينغ.وحتى الآن، يبدو أن هذا قد تخلص من المشكلة.

والسؤال الآن هو لماذا وكيف يمكنني حل المشكلة؟تم تصميم المنتج بحيث لا يكون له حدود مع بعض الزوايا الدائرية والأجزاء الشفافة.

يا هلا،...يبدو أن المشكلة لا تتعلق بالنوافذ بلا حدود (على الأقل في حالتي).

هناك نجاح كبير في الأداء عند التعيين AllowsTransparency إلى صحيح.يبدو أن الأمر برمته قد حقق نجاحًا كبيرًا، حيث يمكن أن يعلق خيط واجهة المستخدم.سلوك غريب جدا.يمكن أن تكون ذات صلة هذه التذكرة

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