[英]WPF and Windows 10 crash
我們有一個 WPF 應用程序,它需要與登錄和注銷相應 PC 的不同用戶保持打開更長時間(一夜之間)。
[更新]
WPF 應用程序使用這里的單實例技術:
http :
//blogs.microsoft.co.il/blogs/arik/SingleInstance.cs.txt
單實例功能不是錯誤的原因
只有在以下情況下才會發生奇怪的崩潰:
操作系統是 Windows 10
以下用戶登錄/注銷順序必須發生:
帳戶 A 正在啟動應用程序並注銷或鎖定 PC。 帳戶 B 在夜間登錄,在 PC 上工作一段時間,然后注銷。 帳戶 A 在早上再次登錄。 應用程序運行,但 UI 被凍結/最小化。 單擊/嘗試調整大小時,出現以下錯誤:
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
at System.Windows.Media.Composition.DUCE.Channel.SyncFlush()
at System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean enableRenderTarget, Nullable`1 channelSet)
at System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr lParam)
at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
我已經查看了這些帖子
我嘗試了上述帖子中的建議,但沒有成功。
此外,我無法始終如一地重現該問題。 似乎需要在登錄之間傳遞一些時間才能出現問題。
感謝您提出的任何建議。
似乎這是已知的 WPF 錯誤: https : //github.com/dotnet/wpf/issues/439 2020 年 6 月 3 日尚無解決方案。
System.Windows.Media.Composition.DUCE.Channel.SyncFlush() 中的 System.OutOfMemoryException 或 System.Runtime.InteropServices.COMException 通常是由 GDI 對象或 User 對象泄漏引起的。
您可以在任務管理器中監控這些泄漏。 為此選擇“GDI 對象”或“用戶對象”列。 如果 GDI 對象計數超過限制(Windows 默認為 10000),您的應用程序中會出現 OutOfMemory 異常。
檢查您的應用程序是否存在 System.Drawing 命名空間對象引用、您忘記銷毀的圖標句柄等的泄漏...
有關詳細信息,請參閱https://blogs.msdn.microsoft.com/dsui_team/2013/11/18/wpf-render-thread-failures/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.