简单的WPF编程中的错误是否会触发蓝屏?

时间:2010-01-30 20:29:04

标签: wpf crash

我在WPF中做了一些.NET编程,包括读取.png和.txt文件,将图像放在画布上,移动它们然后移除它们,突然间我得到了蓝屏。我没想到我的小修补可能会导致驱动程序问题,直到我重新启动并对我的程序执行完全相同的操作并且我得到了另一个驱动程序错误。似乎英特尔图形驱动程序失败了,我的分辨率也下降了。不过第二次没有蓝屏。我正在快速和松散地添加和删除画布的孩子们的元素。我的问题是,这样简单的编程怎么会导致如此严重的错误,我该如何解决?

3 个答案:

答案 0 :(得分:6)

作为一阶近似,所有蓝屏都是由有缺陷的驾驶员引起的,而且大多数驾驶员的错误都是竞争条件。 (参见脚注 1 )那就是 - 它不一定是特定的操作,而是它们与你无法控制的其他事物交互的确切时间。

因此,如果您可以将其归结为一系列操作,那么您可以避免该序列。但通常唯一的解决方法是获得更好的驾驶员 - 而不一定是最新的驾驶员,有时最好回到较旧的驾驶员。

脚注:

1 当然,并非所有的蓝屏都是驱动程序,但它们 都是来自内核模式,用户模式代码永远不可能发出崩溃的调用内核模式,所以当你点击蓝屏时,你发现一些在内核模式下运行的组件中存在错误。根据定义,蓝屏不是您的错误( 2 )(或者您的错误)。

2 除非您编写驱动程序。

答案 1 :(得分:5)

听起来你有一个有缺陷的图形驱动程序。 WPF本身不能触发蓝屏 - 但WPF会调用DirectX,后者又调用图形驱动程序 - 如果图形驱动程序包含错误,那些可以导致蓝屏。

您无法在WPF级别修复此问题,因为WPF在此特定问题中是无辜的。您需要更新图形驱动程序。如果没有更新或最新版本无法修复它,可能的解决方法是禁用WPF的硬件加速,因为这可以避免碰到驱动程序的错误位。

答案 2 :(得分:1)

尝试禁用WPF硬件渲染(DirectX)并查看问题是否消失:

Graphics Rendering Registry Settings

摘录:

禁用硬件加速选项

HKEY_CURRENT_USER \ SOFTWARE \微软\ Avalon.Graphics \ DisableHWAcceleration

DWORD

禁用硬件加速选项使您可以关闭硬件加速以进行调试和测试。当您在应用程序中看到渲染工件时,请尝试关闭硬件加速。如果工件消失,问题可能在于您的视频驱动程序。

禁用硬件加速选项是DWORD值,该值为0或1.值为1将禁用硬件加速。如果系统满足硬件加速要求,则值0可实现硬件加速;有关更多信息,请参见图形渲染层。