桌面组合被禁用错误

Tri*_*ror 7 c# wpf

在我的.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()
Run Code Online (Sandbox Code Playgroud)

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

Tri*_*ror 12

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

,随着这一个让我看着办吧.基本上,发生的事情是我有4个用户(大约600个)遇到了问题.他们还报告说,他们的屏幕会随机闪烁,有些报道"任务栏变得坚固".这就是导致DWM组合错误的原因,显然如果他们有多个运行的程序正在密集使用显卡,那么内存就会耗尽.

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

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

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


dsf*_*sho 5

第一个错误与您在WPF窗口中使用的Aero Glass样式有关。当用户关闭Glass主题(并使用基本主题)时,这些Glass方法DwmExtendFrameIntoClientArea会失败。因此,您需要检查是否启用了Desktop Window Manager(DWM)合成

[DllImport("dwmapi.dll", PreserveSig = false)] 
public static extern bool DwmIsCompositionEnabled(); 
Run Code Online (Sandbox Code Playgroud)

第二个问题似乎是一个不受管理的错误。在另一个非常相似的问题上检查这个非常详尽的答案:https : //stackoverflow.com/a/1965382/1255010