我们有一个 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)
我已经查看了这些帖子
- > win32 window in WPF
- > https://social.msdn.microsoft.com/Forums/vstudio/en-US/a29b9b58-376c-49b7-a6b7-fba6a510524a/wpf-and-windows-10-crash?forum=wpf
- > http://www.actiprosoftware.com/community/thread/3849/minimize-navbar-floating-window-size-out-of-m
我尝试了上述帖子中的建议,但没有成功。
此外,我无法始终如一地重现该问题。似乎在登录之间需要经过一些时间才能出现问题。
感谢您提出的任何建议。
最佳答案
似乎这是已知的 WPF 错误:https://github.com/dotnet/wpf/issues/439 2020 年 6 月 3 日还没有解决方案。
关于c# - WPF 和 Windows 10 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40358006/