如果一個例程通過System.Threading.Timer
定期運行,那麼可以做些什麼來防止由於宿主應用程序的終止導致該例程在中途中止呢?如何防止由於應用程序終止而中止線程?
-1
A
回答
0
那麼,如果應用程序正在終止,你不可能做任何事情;但是你可以阻止隱含應用程序終止退出main
(關閉主窗口等),如果你打開一個非後臺線程。
您可以讓計時器在該線程上運行,但是您不能在System.Threading.Timer
上運行該計時器,因爲它在線程池線程(它們是後臺線程)上運行。你可以e。 G。在該線程上啓動調度程序並運行DispatcherTimer
(如果您使用的是WPF)。
0
沒有辦法保證你的線程不會異常終止。任何數量的東西都可能出錯:意外的電源故障,用戶使用任務管理器終止應用程序,或者程序中會使線程崩潰的錯誤只有三種可能性。
如果您正在進行多階段數據庫更新,如果中斷,會使數據庫處於損壞或不一致狀態,那麼您應該使用事務。
0
此代碼應導致主線程阻塞10秒,等待任何排隊計時器回調完成。這可以在主機應用程序的退出點運行。
Dim waitHnd As WaitHandle = New AutoResetEvent(False)
Timer1.Dispose(waitHnd)
waitHnd.WaitOne(10000)
相關問題
- 1. 如何防止殺死/終止或停止Windows應用程序
- 2. 如何防止後臺線程中的異常終止應用程序?
- 3. 如何防止並行線程中的異常終止應用程序?
- 4. 防止用戶終止Java程序?
- 5. 阻止程序終止的線程
- 6. 線程應用程序意外終止
- 7. Boost線程終止程序?
- 8. 由於未捕獲異常'NSUnknownKeyException'而終止應用程序
- 9. .NET ClickOnce應用程序由於UnauthorizedAccessException而終止
- 10. 由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序
- 11. 由於未捕獲異常而終止應用程序'_HKObjectValidationFailureException'
- 12. SIGABRT由於未捕獲的異常而終止應用程序
- 13. 由於未捕獲異常'NSInvalidArgumentException'而終止應用程序,
- 14. 由於未捕獲異常而終止的iPhone應用程序
- 15. 由於未捕獲的異常而終止應用程序
- 16. 由於未捕獲的異常而終止應用程序NSInvalidArgumentException
- 17. AWSS3TransferManager - 由於未捕獲的異常而終止應用程序
- 18. 由於'Swift._NSContiguousString'到'PFObject'而終止應用程序
- 19. 由於未捕獲異常而終止應用程序'NSInternalInconsistencyException?任何線索?
- 20. 終止線程
- 21. 終止線程
- 22. Bluecove&JavaFX - >應用程序線程不會被終止/停止
- 23. Java - Eclipse IDE,由指針異常終止程序終止程序
- 24. TableView應用程序因'NSInternalInconsistencyException'而終止
- 25. 應用程序因Popover而終止
- 26. 如何終止performSelectorInBackground:線程?
- 27. 如何終止線程
- 28. 防止終止控制檯應用程序
- 29. 由於NSEexception而終止?
- 30. 應用程序不終止
該計時器屬於應用程序;如果應用程序終止,那麼定時器就這樣。如果您的應用程序正常關閉,您可以發信號給定時器例程進行清理,但如果有人強制中止應用程序,則可以做的事情不多。 – Joe
@Joe:會有一些方法讓計時器線程繼續進行當前的迭代,然後終止? – CJ7
@ CJ7:如果應用程序的一部分沒有完成,則根據定義,應用程序還沒有完成。 – Vlad