应用对象
.NET Framework 3.5 Service Pack 1

症状

在.NET Framework 3.5 Service Pack 1 (SP1) 中使用 Windows Presentation Foundation (WPF) 呈现图形时,可能会遇到以下问题之一-基于应用程序。

问题 1

在 WPF 应用程序中的VisualBrush.Visual属性的值更改时,该应用程序崩溃。

问题 2

当您执行下列操作之一时,呈现 WPF 应用程序线程中发生内存泄漏︰

  • 您可以使用软件呈现管道呈现三维场景,其中包括一个VisualBrush对象或DrawingBrush对象。例如,您使用软件呈现管道时执行下列操作之一︰

    • 您可以通过使用RenderTargetBitmap类呈现场景。

    • 打印的场景。

    • 呈现层属性设置为 0 时。

    • 通过远程桌面连接中呈现的场景。

  • 在不使用 Windows 显示驱动程序模型 (WDDM) 的计算机上使用WriteableBitmap类呈现场景。

  • 使用硬件呈现管道呈现不使用 WDDM 的计算机上使用平铺的VisualBrush对象或平铺的DrawingBrush对象的场景。

问题 3

WPF 应用程序使用分层窗口崩溃,当您执行下列操作之一︰

  • 使计算机进入等待状态,使用 Windows XP 显示驱动程序模型 (XPDDM),然后在您继续计算机从待机状态。

  • 切换到全屏显示控制台模式时在 Windows XP 上。

原因

原因 1

因为一般错误从呈现线程在线程中的操作进行排序不正确时,将出现此问题。这些操作会导致分离从空父对象的子对象。例如,一个可视对象必须删除从VisualBrush对象之前与VisualBrush对象分离。 但是,若要删除对象的可视对象的操作可能不正确排序。因此,从空父对象中分离的可视对象。

原因 2

由于引用计数错误呈现线程中的发生此问题。

原因 3

因为 Win32 错误代码处理不正确,将出现此问题。

解决方案

若要解决此问题,应用下面的 Microsoft 知识库文章中描述的修复程序包:2667241更新汇总是可用的 Windows Presentation Foundation (WPF) 为 Microsoft.NET Framework 3.5

详细信息

堆栈输出

System.InvalidOperationException: An unspecified error occurred on the render thread.at System.Windows.Media.MediaContext.NotifyPartitionIsZombie(Int32 failureCode)at System.Windows.Media.MediaContext.NotifyChannelMessage()at System.Windows.Interop.HwndTarget.HandleMessage(Int32 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, Boolean isSingleParameter)at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。