近期遇到一个问题。窗口在Loaded同一时候Resize会出现黑屏或者直接崩溃, 调查发现是WPF后端的Render线程渲染UI到DirectX时崩溃。

硬件环境:WES7 + .Net4.0
WPF 应用程序从两个线程開始:一个用于处理呈现,一个用于管理 UI。呈现线程有效地隐藏在后台执行,而 UI 线程则接收输入、处理事件、绘制屏幕以及执行应用程序代码。

遇到的这个问题就是用于处理呈现的线程挂了,异常例如以下:
Exception from HRESULT: 0x88980406
Stack Trace:
0000000021a4d8d8 000007fef7a66869 [HelperMethodFrame: 0000000021a4d8d8]
0000000021a4da20 000007fee485ae0f System.Windows.Media.Composition.DUCE+Channel.SyncFlush()*** WARNING: Unable to verify checksum for PresentationCore.ni.dll
0000000021a4dae0 000007fee3e95615 System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean, System.Nullable`1<ChannelSet>)
0000000021a4dd10 000007fee3eabfec System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean)
0000000021a4dd80 000007fee3eabd0e System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr)
0000000021a4dee0 000007fee3e95fd7 System.Windows.Interop.HwndTarget.HandleMessage(MS.Internal.Interop.WindowMessage, IntPtr, IntPtr)
0000000021a4e070 000007fee3e93d14 System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
0000000021a4e0c0 000007fee4b2b450 MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
1. Update your video drivers, and/or try different video hardware in the problem machine(s). 【试过560、660、770、970显卡都不会解决这个问题。 试过320.18, 320.49, 353.30等驱动也都不会解决这个问题】
2. Disable Hardware rendering. As a quick test, you can use the DisableHWAcceleration registry value discussed here. You would set the value to 1 in order to disable WPF's hardware rendering pipeline. Note that this affects all WPF applications running in that user's session, so be advised you might be impacting more than one application. There are other options for disabling hardware acceleration at a more granular level. Starting in .Net 3.5, you can disable it programmatically on a per-window basis by using the HwndTarget.RenderMode property. Starting in .Net 4.0, you can disable it programmatically on a per-process basis by using the RenderOptions.ProcessRenderMode property. 【更改注冊表不会解决这个问题】
3. Upgrade to the latest version and service pack level of the .Net Framework available for your target platform. 【升级到Net 4.5后。问题解决。降级到4.0后。又出现】
4. Disable the use of Windows.AllowsTransparency and Popup.AllowsTransparency in your application.【包装的应用窗口的AllowsTransparency为False】
5. If you are on Windows XP or Windows 2003, test on a newer operating system, and upgrade if possible.【没有測试。升级OS不太可能】
6. If System.OutOfMemoryExceptions are being reported, then monitor the process's memory usage in Performance Monitor; particularly the Process\Virtual Bytes, Process\Private Bytes, and .NET CLR Memory\# Bytes in All Heaps counters. Also monitor the User Objects and GDI Objects for the process in Windows Task Manager. If you can determine that a specific resource is being exhausted, then troubleshoot the application to fix whatever is causing that resource consumption. Ultimately that should resolve the System.OutOfMemoryException.【查看内存和句柄等,没有内存泄露】

WPF 后台Render线程崩溃, Exception from HRESULT: 0x88980406的更多相关文章

  1. Unable to create the store directory. (Exception from HRESULT: 0x80131468)

    一个ASP.NET的程序,使用了MS ReportViewer报告控件,在用该控件导出生成Excel文件时,先是提示行不能超过65535. 这个是由于Excel2003的行限制的原因.由于修改成用Ex ...

  2. 格式太旧或是类型库无效。 (Exception from HRESULT: 0x80028019 (TYPE_E_UNSUPFORMAT))

    错误提示信息 格式太旧或是类型库无效. (Exception from HRESULT: 0x80028019 (TYPE_E_UNSUPFORMAT)) . Old format or invali ...

  3. 在 WPF 中的线程

    线程处理使程序能够执行并发处理,以便它可以做多个操作一次.节省开发人员从线程处理困难的方式,设计了 WPF (窗口演示文稿基金会).这篇文章可以帮助理解线程在 WPF 中的正确用法. WPF 内部线程 ...

  4. WPF后台动画DoubleAnimation讲解

    WPF后台动画,使用DoubleAnimation做的. 1.移动动画 需要参数(目标点离最上边的位置,目标点离最左边的位置,元素名称) Image mImage = new Image(); Flo ...

  5. 线程崩溃为什么不会导致 JVM 崩溃

    大家好,我是坤哥 网上看到一个很有意思的据说是美团的面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题我看了不少回答,但都没答到根本原因,所以决定答一答,相信大家看完肯定会有收获,本文分以下几 ...

  6. 错误信息:内存位置访问无效。 (Exception from HRESULT: 0x800703E6)

    错误提示: 错误信息:内存位置访问无效. (Exception from HRESULT: 0x800703E6) 异常类型:System.BadImageFormatException 堆栈跟踪: ...

  7. IIS报错:Exception from HRESULT: 0x8007000B解决方法

    报错如下: System.Web.Services.dll 中发生,但未在用户代码中进行处理 其他信息: 服务器无法处理请求. ---> 尝试加载 Oracle 客户端库时引发 BadImage ...

  8. 利用office2000组件进行填充打印报不支持集合。 (Exception from HRESULT: 0x80020011 (DISP_E_NOTACOLLECTION))

    环境:win2008 64位+.net4.0 +office2000 错误提示: 不支持集合. (Exception from HRESULT: 0x80020011 (DISP_E_NOTACOLL ...

  9. System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800AC472

    更新至服务器后运行出错: System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800AC472 解决方法 注册 ...

随机推荐

  1. Codevs 1148 == 洛谷 P1057 传球游戏

    1148 传球游戏 2008年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 上体育课的时候,小蛮的老师 ...

  2. 【CF1020A】New Building for SIS(签到)

    题意: 有n栋楼,从一栋楼某个地方,到大另一栋楼的某个地方,每栋楼给了连接楼的天桥,每走一层或者穿个一栋楼花费一分钟,求出起点到大目的点最少花费的时间 n,h<=1e8,q<=1e4 思路 ...

  3. [LeetCode] Sort Colors 只有3个类型的排序

    Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...

  4. 【MFC】error RC2108: expected numerical dialog constant(转)

    原文转自 http://blog.csdn.net/renyhui/article/details/23120469 [解决方案]在控件ID后面添加 "Static", SS_BI ...

  5. 标准C程序设计七---41

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  6. 反汇编->C++内联

    C/C++提供了内联函数机制 内联函数就是向编译器建议:编译这个函数的时候.直接把函数展开,而不是进行函数调用call.当然编译器并不接受这个建议.仍然把他当做普通函数进行编译 使用内联函数的优点:减 ...

  7. #define xxx do{...} while(0) 宏定义

    linux内核和其他一些开源的代码中,经常会遇到这样的代码: do{ ... }while(0) 这样的代码一看就不是一个循环,do..while表面上在这里一点意义都没有,那么为什么要这么用呢? 实 ...

  8. [转]IIS7.5优化--提高线程数来适应高并发

    根据压测结果做出的修改历史: 第一步:只针对maxWorkerThreads.maxIoThreads和minWorkerThreads做了修改<processModel autoConfig= ...

  9. shell细节决定高度

    1.文件测试操作符 -f[file]:文件存在且为普通文件则为真; -d[directory]:文件存在且为目录文件则为真; -s[size]:文件存在且为文件大小不为0则为真; -e[exist]: ...

  10. 某考试 T3 bitboard

                    bitboardDiscription    天才发明家小K 制造了一块比特板.板子上有2^n个比特元,编号为0 ∼ 2^n−1.每个比特元