27

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

请不要回复来自互联网的链接。请回复追踪来源的策略。如果您找到了解决方法,请回复。

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)
4

3 回答 3

9

这很旧,但无论如何我都会回答,因为我遇到了刚刚解决的同样问题。https://stackoverflow.com/a/18003004/1415307

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

于 2013-08-19T19:21:45.687 回答
8

就我而言,事实证明有问题的应用程序已经在其指定硬件的内存限制上加紧。每当我添加使用大量内存的代码时,都会出现这种情况。

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

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

第一次实现成功了,但经过多次尝试,QA 导致了 OOM 炸弹。所以我实现了一个MemoryFailPoint()withGC.Collect()循环(我知道有点骇人听闻……但有时……完成任务)。

我学到的主要内容是:

  1. 这是 WPF 中一个非常糟糕的错误。
  2. 如果你真的消耗了过多的内存,你只需要担心它。
于 2013-10-25T20:46:58.250 回答
4

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

于 2017-03-27T18:38:32.377 回答