Я работал над приложением DirectX на C # и заметил, что когда я блокирую рабочую станцию, DirectX «Устройство» теряется. После просмотра информации о том, что делать, когда устройство потеряно (и когда Device.Present
выбрасывается *1002*), я переписал код для сброса Device
. Это просто означало, что я позвонил Device.Reset
.
Вызов Device.Reset
восстановил Device
. Нет проблем. Но когда я потерял устройство во второй раз (например, когда компьютер был заблокирован, перешел в спящий режим или активировал экранную заставку), исключение было выдано Device.Reset
.
Исключением было InvalidCallException
, что (согласно документации) означает, что с вызовом что-то пошло не так. Поэтому я предположил, что это проблема с аргументами функции. Таким образом, вместо передачи той же копии PresentParams
, которую я использовал для создания устройства, я создал новый экземпляр PresentParams (сначала с помощью конструктора копирования, а затем путем повторного создания без него) и передал его Device.Reset
.
Не работает. Device.Reset
все еще умирает с InvalidCallException
. Ох, а сообщение об исключении? «Ошибка в приложении». Не полезно.
Можете ли вы указать мне направление или решение, или некоторую документацию о том, как получить больше отладочной информации из DirectX?