我们的 Framework 3.5 sp1,WPF 应用程序在 XP 和 win 7 机器上随机挂起,但出现以下异常。我们有数百名用户,这对任何人来说都是随机发生的,我们没有看到任何异常发生的模式。我们进行了很多搜索,MS 发布了一个 3.5 补丁,它也包含在 3.5 sp1 中,应该可以解决这个问题,但正如你所见,它仍然发生在我们身上。
错误 2012-12-10 08:56:12,348[UI]:主机:应用程序 ErrorSystem.InvalidOperationException:渲染线程上发生未指定的错误。 在 System.Windows.Media.MediaContext.NotifyPartitionIsZombie(Int32 failureCode) 在 System.Windows.Media.MediaContext.NotifyChannelMessage() 在 System.Windows.Interop.HwndTarget.HandleMessage(Int32 消息,IntPtr wparam,IntPtr lparam) 在 System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,Boolean& 处理) 在 MS.Win32.HwndWrapper.WndProc(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,Boolean& 处理) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(对象 o) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象参数,布尔 isSingleParameter) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(对象源,委托回调,对象 args,布尔 isSingleParameter,委托 catchHandler)
我们在日志中看到,在Renderthread
引发上述异常之前,重复记录了 10-15 次以下异常。在异常开始出现之前,我们还注意到日志中有一段时间不活动(10-15 分钟)
错误 2012-12-04 10:38:30,854[UI]:主机:应用程序 ErrorSystem.Runtime.InteropServices.COMException(0x88980406):HRESULT 异常:0x88980406 在 System.Windows.Media.Composition.DUCE.Channel.SyncFlush() 在 System.Windows.Media.Composition.DUCE.CompositionTarget.UpdateWindowSettings(ResourceHandle hCompositionTarget,RECT windowRect,颜色 colorKey,单个常量 Alpha,MILWindowLayerType windowLayerType,MILTransparencyFlags 透明度模式,布尔 isChild,布尔 isRTL,布尔 renderingEnabled,Int32 disableCookie,通道通道) 在 System.Windows.Interop.HwndTarget.UpdateWindowSettings(布尔 enableRenderTarget,Nullable`1 channelSet) 在 System.Windows.Interop.HwndTarget.UpdateWindowSettings(布尔 enableRenderTarget) 在 System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr lParam) 在 System.Windows.Interop.HwndTarget.HandleMessage(Int32 消息,IntPtr wparam,IntPtr lparam) 在 System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,Boolean& 处理) 在 MS.Win32.HwndWrapper.WndProc(IntPtr hwnd,Int32 msg,IntPtr wParam,IntPtr lParam,Boolean& 处理) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(对象 o) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(委托回调,对象参数,布尔 isSingleParameter) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(对象源,委托回调,对象 args,布尔 isSingleParameter,委托 catchHandler)
重新启动应用程序可解决此问题。然而,这正迅速成为我们优先考虑的问题。非常感谢任何有助于解决此问题的指针。