我目前有一個編寫在Visual C# (2013)
中的控制檯應用程序。它打開與USB Multimeter
的連接,然後將值寫入控制檯。我現在想把它變成一個合適的WinForms
或WPF
應用程序(數據被接收,數據被髮送到UI線程,數據被顯示在表格/圖表等中)。爲此,我需要在單獨的線程上接收數據,因爲數據每0.12ms發送一次(這會鎖定主線程上的UI)。處理異步USB數據請求的最佳方法是什麼?
我已經做了一些關於線程和異步任務的閱讀,至今還沒有決定哪一個最適合這個任務。這些(或其他方法)中的哪一個可以作爲實現這一目標的首選方法?
請注意,我不是要求人們爲我寫代碼,我只是問問最好的方法。
所有你真正需要使用的是「Dispatcher」,它將調用另一個線程調用到UI線程。你可以運行一個'BackgroundWorker',它使用你已有的代碼查詢USB端口,並將任何更新發送到UI。你甚至可以使用定時觸發的定時器('System.Threading.Timer'),並使用其中的調度器。調度程序將位於WPF窗口/ UC基類上,並且它會接受一個將在UI線程上觸發的回調。 'Dispatcher.Invoke(()=> {//在這裏更新UI的代碼});' – Charleh