WPF 和 Windows 10 崩溃

pha*_*zzy 7 c# windows crash wpf

我们有一个 WPF 应用程序,它需要与登录和注销相应 PC 的不同用户保持打开更长时间(一夜之间)。

[更新] WPF 应用程序使用这里的单实例技术:http : //blogs.microsoft.co.il/blogs/arik/SingleInstance.cs.txt 单实例功能不是错误的原因

只有在以下情况下才会发生奇怪的崩溃:

  1. 操作系统是 Windows 10

  2. 以下用户登录/注销顺序必须发生:

帐户 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)

我已经查看了这些帖子

我尝试了上述帖子中的建议,但没有成功。

此外,我无法始终如一地重现该问题。似乎需要在登录之间传递一些时间才能出现问题。

感谢您提出的任何建议。

Boo*_*ier 2

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/