gpt4 book ai didi

wpf - 您如何解决 WPF UI 问题?

转载 作者:行者123 更新时间:2023-12-04 03:03:04 24 4
gpt4 key购买 nike

我正在开发一个 WPF 应用程序,该应用程序有时会出现奇怪的问题并且似乎卡在 UI 中。这是不一致的,它发生在不同的页面,但它经常发生,这是一个大问题。我应该提到它不是真正的挂起,如下所述。

我的第一个想法是一些按钮的动画是问题,因为它们在大多数页面上使用,但在删除它们后,挂起仍然发生,尽管看起来不那么频繁。我试图在挂起时闯入调试器;但是从来没有任何代码可以查看。我的代码没有运行。我还注意到“挂起”并不完整。我有代码可以让我拖动表单(它没有边框或标题)继续工作。我还有我的赢得关闭按钮,当我点击它时它会起作用。在我的代码运行时,单击按钮似乎确实有效,但 UI 根本不会更新以显示新页面。

我正在寻找任何建议、工具或技术来追踪这个奇怪的问题,所以如果您有任何想法,我将不胜感激。

编辑:它又发生了,所以这次当我试图闯入调试器时,我选择了“显示反汇编”。它把我带到了 MS.Win32.UnsafeNativeMethods.GetMessageW。堆栈跟踪如下:

[Managed to Native Transition]  

WindowsBase.dll!MS.Win32.UnsafeNativeMethods.GetMessageW(ref System.Windows.Interop.MSG msg, System.Runtime.InteropServices.HandleRef hWnd, int uMsgFilterMin, int uMsgFilterMax) + 0x15 bytes
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 frame) + 0x49 bytes
WindowsBase.dll!System.Windows.Threading.Dispatcher.Run() + 0x4c bytes
PresentationFramework.dll!System.Windows.Application.RunDispatcher(object ignore) + 0x1e bytes
PresentationFramework.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!System.Windows.Application.Run() + 0x19 bytes WinterGreen.exe!WinterGreen.App.Main() + 0x5e bytes C# [Native to Managed Transition]
[Managed to Native Transition]
mscorlib.dll!System.AppDomain.nExecuteAssembly(System.Reflection.Assembly assembly, string[] args) + 0x19 bytes mscorlib.dll!System.Runtime.Hosting.ManifestRunner.Run(bool checkAptModel) + 0x6e bytes mscorlib.dll!System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly() + 0x84 bytes mscorlib.dll!System.Runtime.Hosting.ApplicationActivator.CreateInstance(System.ActivationContext activationContext, string[] activationCustomData) + 0x65 bytes mscorlib.dll!System.Runtime.Hosting.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 bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state) + 0x66 bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x6f bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x44 bytes

最佳答案

尝试删除窗口的无边框行为,看看是否有帮助。另外,您是否正在使用 BeginInvoke() 或 Invoke() 进行任何长时间运行的操作?

另一件要注意的事情:当您闯入代码时,请尝试查看主线程以外的线程。其中之一可能是阻塞了 UI 线程。

关于wpf - 您如何解决 WPF UI 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/104224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com