我有C#窗體窗體應用程序,用於查詢來自連接設備的數據。我現在啓動一個System.Timer.Timer,它被設置爲每隔20ms觸發一次,並從連接的工具中獲取數據。這工作正常,但當然UI變得對數據計數的更新,數據計算的最終結果等等沒有響應。我也在一些OpenGL窗口中顯示數據,所以有很多事情要做。Windows窗體訪問設備數據的響應式UI
_timer1 = new System.Timers.Timer{
Interval = Convert.ToDouble(txtElapse.Text),
Enabled = true};
_timer1.Elapsed += Timer1Elapsed;
然後,我使用無效的形式重繪的OpenGL,這就是所有我的計算等等被執行。
我的問題是關於線程,基本上是在什麼時候,或者我應用線程邏輯到什麼對象?計時器本身?如果我這樣做,我無法調試,它只是坐在那裏。我已經做了大量與ThreadPools,Backgroundworker,Thread等相關的研究,但對於這種情況沒有任何作用,因爲我相信(錯誤地?)計時器在默認情況下在其自己的線程上運行。