私は、シリアル ポート経由でデジタル マルチメーターと接続する C# Windows Forms アプリケーションに取り組んでいます。BackgroundWorker のDoWork
イベント ハンドラーで、複数のコマンドをマルチメーターに送信します。たとえば、電圧/抵抗の測定を行い、データを返すように要求します。次に、シリアル ポートのDataReceived
イベントが発生し、そのメソッドで簡単な処理を行います。データを使用ReadLine()
して文字列に保存します。しかし、DoWork
とは非同期であるため、データを要求するステートメントの直後にDataReceived
その文字列を使用しようとすると、正しい値が得られないと思います。終わるDoWork
のを待たなければなりません。DataReceived
現在、私はただ持っていますThread.Sleep(100)
そのような声明のたびに。これは最善の解決策ではないと確信しています。何とか終了するのを待つDataReceived
、またはこのスレッドの問題に対処するより効率的な方法はありますか?
質問する
2174 次