如何使用 Win2D 模拟 DeviceLost 事件?

2024-02-18

我有一个CanvasControl在 UWP 应用程序中,我注意到当我将 Surface 单独放置一段时间并且它会自动进入睡眠状态时,CanvasControl恢复后不再起作用。之前绘制的位图现在是空白的。

我尝试在 Visual Studio 2015 中模拟挂起/恢复,但这似乎不会导致问题。它恢复得很好。

我有一种感觉,这与CanvasDevice.DeviceLost事件,尽管我用CanvasControl.CreateResources事件,我找不到一种方法来轻松测试它。

我尝试了以下方法:

// This throws an exception. Not allowed to do this.
myCanvas.Device.RaiseDeviceLost(); 

// and this doesn't report a device lost, but myCanvas becomes unusable.
myCanvas.Device.Dispose();

有没有一种方法可以以编程方式调用CanvasDevice.DeviceLost事件?我怎样才能伪造它?


无法使用 API 触发设备丢失事件,但您可以使用一个命令行工具:

DXCap.exe -forcetdr

您需要的 DXCap 版本是 Windows 10 图形工具包的一部分,适用于 Win10 build 10586 或更高版本:https://msdn.microsoft.com/en-us/library/mt125501.aspx#InstallGraphicsTools https://msdn.microsoft.com/en-us/library/mt125501.aspx#InstallGraphicsTools

安装VSGD后,您可以在windows\system32目录中找到DXCap。

不幸的是,这个选项似乎还没有记录,但来自命令行:

  -forcetdr          Don't capture or replay, but simply force a GPU Timeout
                     Detection and Recovery event, then exit.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Win2D 模拟 DeviceLost 事件? 的相关文章

随机推荐