1. 程式人生 > >C# timer時間控制元件 關於迴圈的使用

C# timer時間控制元件 關於迴圈的使用

1.在某些情況下,while之類的迴圈會造成卡頓,如果是無限迴圈,甚至會卡死程式,即便在迴圈中間使用thread.sleep(1000)停頓,也並不能解決問題。

2.c#的system包中原本就有一個timers控制元件,使用它可以完美解決問題1,甚至可以作為一個執行緒定期執行業務。我的業務需求是不停的請求感測器,給感測器傳送指令,接收其資料。

3.具體程式碼:

System.Timers.Timer aTimer = new System.Timers.Timer();
        private void con_select(object sender, RoutedEventArgs e)
        {
            //到時間的時候執行事件  
            aTimer.Elapsed += new System.Timers.ElapsedEventHandler(sendControl);
            aTimer.Interval = 500;
            aTimer.AutoReset = true;//執行一次 false,一直執行true  
            //是否執行System.Timers.Timer.Elapsed事件  
           aTimer.Enabled = true;   
        }

        private void sendControl(object source, System.Timers.ElapsedEventArgs e)
        {
            //獲取xyz角度的命令
            byte[] contol = modbus.getXYZ();
            comm.WritePort(contol, 0, contol.Length);
        }


停止timer控制元件:

 private void stop(object sender, RoutedEventArgs e)
 {
    aTimer.Stop();
 }