我有一個程序化的GUI方法需要多次從串行中檢索數據。在VB中讀取串行數據時發生非阻塞等待
它每次都這樣做,它需要等待串行數據功能完成(例如,通過平均從串行接收到的所有數據,該功能可以工作15秒)。
什麼是一些非阻塞的方式等待呢? 起初我試過Threading.Thread.Sleep(15000)
,但是這完全鎖定了程序。
我也試過非常相似的方法(仍然使用睡眠,但以較小的間隔)。阻擋仍然存在,只有0.5秒的時間間隔。
Public Sub ResponsiveSleep(ByRef iMilliSeconds As Integer)
Dim i As Integer, iHalfSeconds As Integer = iMilliSeconds/500
For i = 1 To iHalfSeconds
Threading.Thread.Sleep(500) : Application.DoEvents()
Next i
End Sub
在我調用wait函數之前,我應該使串行讀函數成爲一個單獨的線程嗎?
線程是不好的做法如今,也許你可以考慮異步功能和'Tasks' – Jaxi
但是,是的,你要我實際使用DataReceived事件檢索始終保持你的工作和你的GUI單獨如果可能的話:) – Jaxi