我在我的应用程序中遇到此异常。 我在网上找到了讨论它的链接,但没有任何指示如何追踪它和/或解决它。
请勿回复来自互联网的链接。 请回复并提供追踪来源的策略。 如果您找到它们,请回复并提供解决方法。
Source: PresentationCore
Message: Exception from HRESULT: 0x88980406
Stack Trace:
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 MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
我遇到了刚刚解决的相同问题:https://stackoverflow.com/a/18003004/1415307
基本上,我的这个错误问题归结为过时的显卡驱动程序。更新到最新驱动后,问题已解决。
就我而言,事实证明相关应用程序已经超出了其指定硬件的内存限制。每当我添加使用大量内存的代码时,就会出现这种情况。
当我实现将处理图像缓冲区放在另一个线程上的功能时,我最终使用了
MemoryFailPoint
机制。
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.memoryfailpoint
第一次实现成功了,但经过多次尝试后,QA 导致了 OOM 炸弹。 所以我用
MemoryFailPoint()
循环实现了 GC.Collect()
(我知道有些黑客……但有时……完成任务)。
我学到的主要内容是:
在微软的大力帮助下,我们刚刚解决了困扰我们一年多的SyncFlush问题。事实证明,我们正在本机代码中创建多媒体计时器,但我们并不是每次都释放它们。更具体地说,我们调用了 timeBeginPeriod 和 timeEndPeriod,但调用 begin 的次数多于 end,从而造成了资源泄漏。 WPF 渲染线程需要使用这些计时器,但我们耗尽了它们的有限供应(可能是 65k)。结果是渲染线程停止渲染并挂起或导致崩溃。小心计时器!