當休眠失敗
回答
看起來像沒有直接的方式來檢測休眠[更正:我錯了。見Fowl的答案]直到Windows 8(請參閱PowerRegisterSuspendResumeNotification)。但我想你可以空閒循環並觀察系統時間。如果時間突然向前跳躍,您已經成功休眠(並恢復!),如果這在一分鐘左右沒有發生,請求可能失敗。我認爲你可以使用GetTickCount64函數,它對系統時間變化不敏感,但顯然包括睡眠時間的偏差。如果這不起作用,請使用GetSystemTimeAsFileTime,但也請注意WM_TIMECHANGE消息。
您也可以檢查系統是否在休眠失敗時Windows向事件日誌寫入任何內容。如果是這樣,您的應用程序可以監視事件日誌中的相關條目。這將是一個更可靠的方法。
真的沒有辦法嗎? .NET有http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.powermodechanged.aspx – Fowl 2012-07-09 03:21:58
它使用WM_POWERBROADCAST消息,按照http://msdn.microsoft.com/en-us /library/windows/desktop/aa373248%28v=vs.85%29.aspx – 2012-07-09 03:32:24
@Fowl:你應該將其作爲答案發布。 (我也會編輯它。) – 2012-07-09 03:34:30
嗯......也許我錯過了這裏的觀點,但根據文檔,如果失敗,它應該返回FALSE。它仍然在你的情況下返回TRUE?
看起來是這樣。在Windows中發生的是該過程開始,然後簡單地退出,我再次看到桌面... – ahmd0 2012-07-06 22:28:10
註冊(RegisterPowerSettingNotification),然後偵聽WM_POWERBROADCAST,然後詢問事件日誌以獲取更多詳細信息。
如果你想處理多個操作系統版本,但是它是可行的,
謝謝,但「詢問事件日誌以獲取更多詳細信息」聽起來像是一個IT技術支持過度電話的好建議,但是在自動代碼中實施是一個有爭議的問題... – ahmd0 2012-07-10 06:55:38
您可以詢問來自應用程序的事件日誌。在MSDN中搜索OpenEventLog。 – 2012-07-10 20:38:26
- 1. 休眠失敗在數據庫
- 2. 休眠關係外鍵約束失敗
- 3. 春天休眠保存實體失敗
- 4. 休眠+ c3p0池+ ehcache失敗開始
- 5. 休眠/春 - JUnit的失敗交易(REQUIRES_NEW)
- 6. 休眠失敗映射兩個表
- 7. 休眠失敗加載空間數據
- 8. 休眠測試用例失敗
- 9. 休眠Criteria.setMaxResults()上的Oracle 11g失敗
- 10. 休眠4.3.11 - Envers失敗ZonedDateTime場
- 11. 休眠:外鍵約束失敗
- 12. 休眠對象加載失敗
- 13. 休眠異常:事務回滾失敗
- 14. Grails deleteAll()失敗,休眠異常
- 15. 休眠@電子郵件驗證失敗
- 16. 休眠OneToMany插入失敗異常
- 17. 休眠初始SessionFactory創建失敗
- 18. (休眠)表失敗後提交
- 19. 休眠失敗當與彈簧引導和彈簧數據JPA
- 20. 休眠saveOrUpdate失敗,當我執行它的空表
- 21. 當使用休眠
- 22. 休眠/ Mysql,連接丟失
- 23. 休眠10到12小時後休眠連接丟失
- 24. 嵌套事務當休眠
- 25. 休眠使用受保護的默認構造函數失敗
- 26. 服務器上的休眠實例化失敗
- 27. 休眠Envers和「Javassist進行強化失敗」異常
- 28. 休眠@Version導致數據庫外鍵約束失敗
- 29. 休眠和彈簧安全失敗的更新
- 30. 休眠日期標準失敗,但HQL工作
對於第二個參數('FALSE'在技術上會更加正確,因爲它是'BOOLEAN')使用NULL。應用程序是否有可能阻止該操作,但該函數仍然從中返回「TRUE」? – chris 2012-07-06 23:18:54
看起來像直到Windows 8沒有直接的方式來檢測休眠。但我想你可以閒置循環,並觀看系統時間。如果時間突然向前跳躍,您已經成功休眠(並恢復!),如果這在一分鐘左右沒有發生,請求可能失敗。 – 2012-07-07 05:33:42
您也可以檢查系統是否在休眠失敗時Windows向事件日誌寫入任何內容。如果是這樣,您的應用程序可以監視事件日誌中的相關條目。 – 2012-07-07 05:35:12