pha*_*zzy 7 c# windows crash wpf
我们有一个 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)
Run Code Online (Sandbox Code Playgroud)
我已经查看了这些帖子
我尝试了上述帖子中的建议,但没有成功。
此外,我无法始终如一地重现该问题。似乎需要在登录之间传递一些时间才能出现问题。
感谢您提出的任何建议。
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/