我们有一个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)
我已经查看了这些帖子
我尝试了以上帖子中的建议但没有运气。
另外,我不能始终如一地重现这个问题。似乎有些时间需要在登录之间传递,以便出现问题。
感谢您提出的任何建议。
答案 0 :(得分:2)
似乎这是已知的WPF错误:https://github.com/dotnet/wpf/issues/439 2020年6月3日尚未解决。
答案 1 :(得分:0)
System.OutOfMemoryException or System.Runtime.InteropServices.COMException in System.Windows.Media.Composition.DUCE.Channel.SyncFlush() are usually caused by GDI objects or User objects leaks.
You can monitor these leaks in Task Manager. Select "GDI objects" or "User objects" columns for this. If GDI objects count exceeds limit (10000 is default for windows) you get OutOfMemory exception in your application.
Check your application for leak of System.Drawing namespace object references, icon handles that you forgot to destroy, etc...
For more information see https://blogs.msdn.microsoft.com/dsui_team/2013/11/18/wpf-render-thread-failures/