2013-12-21 60 views
0

我目前有一個編寫在Visual C# (2013)中的控制檯應用程序。它打開與USB Multimeter的連接,然後將值寫入控制檯。我現在想把它變成一個合適的WinFormsWPF應用程序(數據被接收,數據被髮送到UI線程,數據被顯示在表格/圖表等中)。爲此,我需要在單獨的線程上接收數據,因爲數據每0.12ms發送一次(這會鎖定主線程上的UI)。處理異步USB數據請求的最佳方法是什麼?

我已經做了一些關於線程和異步任務的閱讀,至今還沒有決定哪一個最適合這個任務。這些(或其他方法)中的哪一個可以作爲實現這一目標的首選方法?

請注意,我不是要求人們爲我寫代碼,我只是問問最好的方法。

+1

所有你真正需要使用的是「Dispatcher」,它將調用另一個線程調用到UI線程。你可以運行一個'BackgroundWorker',它使用你已有的代碼查詢USB端口,並將任何更新發送到UI。你甚至可以使用定時觸發的定時器('System.Threading.Timer'),並使用其中的調度器。調度程序將位於WPF窗口/ UC基類上,並且它會接受一個將在UI線程上觸發的回調。 'Dispatcher.Invoke(()=> {//在這裏更新UI的代碼});' – Charleh

回答

0

Asryael,你的應用程序聽起來很有趣。爲了美化它,你可以創建一個WPF MVVM應用程序。 聽起來並不難。

這裏是一個基礎教程: http://www.codeproject.com/Articles/165368/WPF-MVVM-Quick-Start-Tutorial

的基本思想:

XAML - 定義的用戶界面。如你所願,隨心所欲。

然後讓xaml數據中的變量綁定到屬性(變量) 每次從USB萬用表獲取更新時更新線程中的變量。

玩得開心。你的應用程序聽起來很有趣......

相關問題