简体   繁体   中英

WPF and Windows 10 crash

We have a WPF app that need to stay opened for a longer period of time (overnight) with different users that log on and off to the respective PC.

[Update] The WPF app uses Single Instance technique from here: http://blogs.microsoft.co.il/blogs/arik/SingleInstance.cs.txt The single instance feature is not a cause for the bug

There is a strange crash happening only in the following situation:

  1. OS is Windows 10

  2. The following sequence of user sign in / sign off must happen:

Account A is starting the app and logs off or locks the PC. Account B signs in during the night, works on the PC for a while and then logs off. Account A signs in again in the morning. The app runs but is the UI is frozen/minimized. When clicked/ tried to be resized, the following error occurs:

   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)

I already reviewed these posts

I tried the suggestions from the above posts with no luck.

Also, I cannot reproduce the problem consistently. It seem that some time needs to pass between the logins so that the problem to appear.

Thanks for any suggestion that you may have.

似乎这是已知的 WPF 错误: https : //github.com/dotnet/wpf/issues/439 2020 年 6 月 3 日尚无解决方案。

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/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM