我的WPF應用程序在其「引導」過程中很早就啓動了Threading.Timer。定時器間隔爲100ms,定時器代表中的代碼通常需要大約70ms(它在一系列for
循環中執行一些操作,其中一些涉及從串行端口讀取)。啓動計時器後,應用程序的其餘部分被初始化(在DI框架中註冊的類型,視圖的創建,視圖模型,各種其他初始化函數)。在這幾秒鐘內,在定時器代理中執行的代碼完全「失速」。它永遠不會失敗,並且它的連續讀取都不會失敗(不管這純粹是運氣) - 計時器代碼似乎暫停執行大約3秒鐘。爲什麼Threading.Timer委託失速?
我只能假設所有啓動的東西(在UI線程上)獲得更高的優先級,從而阻止計時器線程獲取任何CPU時間。有什麼我可以做的嗎?在啓動過程中稍後啓動計時器可能是一種選擇,但我想首先探索其他解決方案。請注意,Threading.Timer如何處理「重入」(如果這是正確的術語),即在前一次調用仍在運行時計時器「打勾」?當前一個調用最終完成時,下一個調用是否「排隊」並運行?還是我需要自己處理?