TCPを介してデバイスと通信するクラスがあります。コマンドを送信してからstream.Read(reply, 0, 1)
、TcpClientのGetStream()を発行します。私はすべてのバイトを読み取り、次に読み取ったバイトを文字列に結合し、その文字列を終了文字列と比較して、読み取りを停止するタイミングを知らせます。
デバイスソフトウェアにはいくつかの欠陥があるため、終了文字列が常に送信されるとは限りません。これを適切な方法で処理し、一定期間を使用して読み取りを停止する必要があるかどうかを判断したいと思います。
stream.ReadTimeout
を以外に設定する-1
と、このタイムアウトを超えるとソケットが閉じられますが、これは望ましくありません。
と一緒に使用するstream.BeginRead(..)
とstream.ReadTimeout = -1
、しばらくするとスレッドプールを吸って乾かします。
この問題に対処するためにどのようなインテリジェントなソリューションを構築できますか?