我試圖在 Visual Studio 中按下檢查按鈕時連續發送串行數據。到目前為止,這就是我想出的:private void checkBox1_CheckedChanged_1(object sender, EventArgs e) { while (checkBox1.Checked) { serialPort1.Write("D"); Task.Delay(100); if (checkBox1.Checked != true) { break; } } ` 出于某種原因,每當我啟動程序并選中該框時,程序就會凍結。我無法退出程序或最小化它或任何東西。它只是停在它的軌道上。
2 回答

蕭十郎
TA貢獻1815條經驗 獲得超13個贊
Windows 中的用戶界面基于消息。您的 while 循環在處理這些消息的線程中運行。當您的代碼運行時,不會處理任何消息。用戶界面無法重繪,也無法對用戶輸入做出反應。
更好的方法:使用Timer
組件。Tick
Timer的事件將根據 的Interval
屬性每 n 毫秒執行一次Timer
。在這種情況Tick
下,您可以檢查 Checkbox 的狀態,然后根據是否選中復選框來執行某些操作。
如果“做某事”是一項非常短暫的活動,這是一個很好的方法。對于更長的活動,您需要更復雜的設置,這超出了 SO 問題的范圍,除非您提供更多詳細信息。
- 2 回答
- 0 關注
- 223 瀏覽
添加回答
舉報
0/150
提交
取消