0x88980406 SyncFlush() ...有解决方法吗?

问题描述 投票:0回答:3

我在我的应用程序中遇到此异常。 我在网上找到了讨论它的链接,但没有任何指示如何追踪它和/或解决它。

请勿回复来自互联网的链接。 请回复并提供追踪来源的策略。 如果您找到它们,请回复并提供解决方法。

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)
wpf crash wpf-4.0
3个回答
10
投票

我遇到了刚刚解决的相同问题:https://stackoverflow.com/a/18003004/1415307

基本上,我的这个错误问题归结为过时的显卡驱动程序。更新到最新驱动后,问题已解决。


9
投票

就我而言,事实证明相关应用程序已经超出了其指定硬件的内存限制。每当我添加使用大量内存的代码时,就会出现这种情况。

当我实现将处理图像缓冲区放在另一个线程上的功能时,我最终使用了

MemoryFailPoint
机制。

https://learn.microsoft.com/en-us/dotnet/api/system.runtime.memoryfailpoint

第一次实现成功了,但经过多次尝试后,QA 导致了 OOM 炸弹。 所以我用

MemoryFailPoint()
循环实现了
GC.Collect()
(我知道有些黑客……但有时……完成任务)。

我学到的主要内容是:

  1. 这是 WPF 中一个非常严重的错误。
  2. 只有当您确实消耗了过多的内存时,您才需要担心。

4
投票

在微软的大力帮助下,我们刚刚解决了困扰我们一年多的SyncFlush问题。事实证明,我们正在本机代码中创建多媒体计时器,但我们并不是每次都释放它们。更具体地说,我们调用了 timeBeginPeriod 和 timeEndPeriod,但调用 begin 的次数多于 end,从而造成了资源泄漏。 WPF 渲染线程需要使用这些计时器,但我们耗尽了它们的有限供应(可能是 65k)。结果是渲染线程停止渲染并挂起或导致崩溃。小心计时器!

© www.soinside.com 2019 - 2024. All rights reserved.