2

我们的 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)

重新启动应用程序可解决此问题。然而,这正迅速成为我们优先考虑的问题。非常感谢任何有助于解决此问题的指针。

4

1 回答 1

0

这是一种红鲱鱼。工程团队解决了这个问题。我们的用户正在使用虚拟机并使用 citrix 连接到机器。citrix 支持使用客户端计算机 cpu/gpu 卸载图形和渲染的反向无缝设置导致了此问题。

于 2013-11-08T16:56:45.900 回答