Я работаю над приложением WPF, которое иногда вызывает странные проблемы и в пользовательском интерфейсе выглядит как зависает . Это противоречиво, это происходит на разных страницах, но это случается достаточно часто, что является большой проблемой. Я должен отметить, что это не настоящее зависание, как описано ниже.
Моей первой мыслью было, что анимация некоторых кнопок была проблемой, поскольку они используются на большинстве страниц, но после их удаления все еще происходят зависания, хотя, по-видимому, немного реже. Я попытался взломать отладчик, когда происходит зависание; однако, здесь никогда не будет кода для просмотра. Мой код не работает. Я также заметил, что «зависание» не завершено. У меня есть код, который позволяет мне перетаскивать форму (она не имеет границы или заголовка), которая продолжает работать. У меня также есть моя выигранная кнопка закрытия, которая работает, когда я нажимаю на нее. Кажется, что нажатие на кнопки действительно работает во время выполнения моего кода, но пользовательский интерфейс просто никогда не обновляется, чтобы показать новую страницу.
Я ищу любые советы, инструменты или методы, чтобы выследить эту странную проблему, поэтому, если у вас есть какие-либо мысли, я буду очень признателен.
РЕДАКТИРОВАТЬ: Это просто произошло снова, поэтому на этот раз, когда я попытался взломать отладчик, я решил "показать разборку". Это приводит меня к 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) + 0 015
WindowsBase.dll! System.Windows.Threading.Dispatcher.GetMessage (ref System.Windows.Interop.MSG msg, System.IntPtr hwnd, int minMessage, int maxMessage) + 0x48 байт
WindowsBase.dll! System.Windows.Threading.Dispatcher.PushFrameImpl (System.Windows.Threading.DispatcherFrame frame = {System.Windows.Threading.DispatcherFrame}) + 0x8b байт
WindowsBase.dll! System.Windows.Threading.Dispatcher.PushFrame (кадр System.Windows.Threading.DispatcherFrame) + 0x49 байт
WindowsBase.dll! System.Windows.Threading.Dispatcher.Run () + 0x4c байт
PresentationFramework.dll! System.Windows.Application.RunDispatcher (игнорирование объекта) + 0x1e байт
PresentationFramework.dll! System.Windows.Application.RunInternal (окно System.Windows.Window) + 0x6f байт
PresentationFramework.dll! System.Windows.Application.Run (окно System.Windows.Window) + 0x26 байт
PresentationFramework.dll! System.Windows.Application.Run () + 0x19 байт
WinterGreen.exe! WinterGreen.App.Main () + 0x5e байт C #
[Родной для управляемого перехода]
[Управляемый к нативному переходу]
mscorlib.dll! System.AppDomain.nExecuteAssembly (сборка System.Reflection.Assembly, строка [] args) + 0x19 байт
mscorlib.dll! System.Runtime.Hosting.ManifestRunner.Run (bool checkAptModel) + 0x6e байт
mscorlib.dll! System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly () + 0x84 байта
mscorlib.dll! System.Runtime.Hosting.ApplicationActivator.CreateInstance (System.ActivationContext ActivationContext, строка [] активацииCustomData) + 0x65 байт
mscorlib.dll! System.Runtime.Hosting.ApplicationActivator.CreateInstance (System.ActivationContext активацииContext) + 0xa байт
mscorlib.dll! System.Activator.CreateInstance (System.ActivationContext активацииContext) + 0x3e байт
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 executeContext, System.Threading.ContextCallback, состояние объекта) + 0x6f байт
mscorlib.dll! System.Threading.ThreadHelper.ThreadStart () + 0x44 байта