0x88980406 SyncFlush() …Is there a workaround?

空扰寡人 提交于 2019-12-21 03:18:12

问题


I get this exception in my application. I have found links discussing it on the web but nothing indicating how to track it down and/or workaround it.

Please do not reply with links from the internet. Please reply with strategies of tracking the source. Please reply with workarounds if you found them.

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)

回答1:


This is old, but I will answer anyways, since I had the same issue that I just resolved.https://stackoverflow.com/a/18003004/1415307

Basically, my issue with this error came down to an outdated video card driver. After updating to the newest driver, the issue has been resolved.




回答2:


In my case it turned out the application in question was already pressing up on memory limits of its specced hardware. Anytime I added code that used a decent amount of memory this would crop up.

I ended up using a MemoryFailPoint mechanism when I implemented a feature that placed processing an image buffer on another thread.

http://msdn.microsoft.com/en-us/library/system.runtime.memoryfailpoint.aspx

First implementation did the trick but after many tries QA caused a OOM bomb. So I implemented a MemoryFailPoint() with GC.Collect() loop (hackish I know...but sometimes...get er done).

The main thing I learned is... a) This is a really bad bug in WPF. b) You only have to worry about it if you have truly consumed an inordinate amount of memory.




回答3:


With Microsoft's excellent help, we just solved a SyncFlush problem that has plagued us for more than a year. It turns out that we were creating multimedia timers in native code, but we weren't freeing them every time. More specifically, we called timeBeginPeriod and timeEndPeriod, but we called begin more times than end, thus creating a resource leak. The WPF rendering thread needs to use those timers, but we exhausted a limited supply of them (perhaps 65k). The result was that the rendering thread stopped rendering and either hung or caused a crash. Watch out for timers!



来源:https://stackoverflow.com/questions/15480028/0x88980406-syncflush-is-there-a-workaround

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!