Csharp/C#教程:桌面组合被禁用错误分享


桌面组合被禁用错误

在我的.NET 4.0上的WPF应用程序中,我让用户报告两个看似非常间歇性的错误,我无法处理。 下面,我发布消息和堆栈跟踪的最顶行。 如果需要,我可以发布完整的堆栈跟踪。

Message: {Desktop composition is disabled} The operation could not be completed because desktop composition is disabled. (Exception from HRESULT: 0x80263001) StackTrace: at Standard.NativeMethods.DwmExtendFrameIntoClientArea(IntPtr hwnd, MARGINS& pMarInset) Message: Insufficient memory to continue the execution of the program. StackTrace: at System.Windows.Media.Composition.DUCE.Channel.SyncFlush() 

谷歌并没有certificate是非常有帮助的,所以我希望也许你们之前见过它们。

我终于能够确定问题 – 图形适配器驱动程序。

这篇文章和这篇文章帮助我弄明白了。 基本上,发生的事情是我有4个用户(大约600个)遇到了问题。 他们还报告说,他们的屏幕会随机闪烁,有些报道“任务栏变得坚固”。 这将导致DWM组合错误,并且显然如果他们有多个程序正在运行,这些程序正在大量使用显卡,那么它将耗尽内存。

我测试使用Geeks3d.com FurMark基准测试程序来最大化显卡然后启动我的应用程序。 它会在打开时崩溃并抛出outofmemoryexception,所以我知道这不是内存泄漏。

更新驱动程序后,我无法生成崩溃…即使有多个程序和FurMark全速运行。

希望这可以帮助有人在路上。

第一个错误与您在WPF窗口中使用的Aero Glass样式有关。 当用户关闭玻璃主题(并使用基本主题)时,这些Glass方法(如DwmExtendFrameIntoClientArea会失败。 因此,您需要检查桌面窗口管理器(DWM)组合是否已启用 :

 [DllImport("dwmapi.dll", PreserveSig = false)] public static extern bool DwmIsCompositionEnabled(); 

第二个问题似乎是一个无法管理的bug。 在另一个非常相似的问题上查看这个非常精细的答案: https : //stackoverflow.com/a/1965382/1255010

上述就是C#学习教程:桌面组合被禁用错误分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955494.html

(0)
上一篇 2021年11月21日
下一篇 2021年11月21日

精彩推荐