1

SerialPortクラス を使用してC#で開発しています。SerialPort.Write()ブロッキング方法です。書き込みを停止したい場合、このメソッドを終了するにはどうすればよいですか? スレッドを使用して書き込みます。書き込みを停止したいときにこのスレッドを中止しますが、COM ポートは書き込みを続けます。

何か案は?

どうもありがとう。

私の基本的な英語で申し訳ありません。

4

2 に答える 2

1

シリアル ポートのストリームと UART の両方がバッファリングを行います。

最善の方法は、小さなパッケージ (行) を送信し、書き込みスレッドを中断して、最後の送信パッケージを送信することです。市民的な方法で書き込みを停止できる場合は、 DiscardWriteBuffer() メソッドもあります。

小さいパッケージが選択肢にない場合は、少なくとも WriteBufferSize を小さい値 (ただし > 0) に設定できます。

于 2009-04-20T12:50:18.367 に答える
0

SerialPort.Write()使用 のブロック状態から抜け出すためSerialPort.DiscardOutBuffer()。これは原因IOExceptionですが、ブロックされた状態からきれいに抜け出すことができる限り、それは問題ありません。

于 2010-02-03T11:27:02.893 に答える