我一直在用 C# 编写 DirectX 应用程序,我注意到当我锁定工作站时,DirectX“设备”会丢失。在查找了有关设备丢失时(以及当 aDeviceLostException
被 抛出时Device.Present
)如何处理的信息后,我重新编写了代码以重置Device
. 这仅仅意味着我打电话给Device.Reset
.
呼叫Device.Reset
恢复了Device
. 没问题。但是当我第二次丢失设备时(例如,当计算机被锁定、进入睡眠状态或激活屏幕保护程序时)Device.Reset
,.
例外是InvalidCallException
,这(根据文档)意味着调用出现问题。所以我认为这是函数参数的问题。因此,我没有传递用于创建设备的相同副本PresentParams
,而是创建了一个 PresentParams 的新实例(首先使用复制构造函数,后来在没有它的情况下重新创建)并将其传递给Device.Reset
.
不工作。Device.Reset
仍然与InvalidCallException
. 哦,异常的消息?“申请错误。” 没有帮助。
您能否指出解决方案的方向,或一些有关如何从 DirectX 中获取更多调试信息的文档?