私はシリアルから何回もデータを取得する必要がある手続き型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
私は待機関数を呼び出す前にシリアル読み取り関数を別のスレッドにする必要がありますか?
スレッドは現時点では悪い習慣ですが、おそらく非同期関数と 'Tasks'を調べることができます。 – Jaxi
しかし、可能であれば、作業とGUIを常に分離しておく必要があります:) – Jaxi