私はSeralPortクラスに組み込まれた を使用してシリアルデバイスと通信するC#プログラムを持っています。しかし、私は非同期の書き込み をしたいと私はBaseStream.BeginWrite()を使用しています。非同期コールバック でBaseStream.EndWrite()を呼び出します。すべてこれはうまく動作します。しかし、ときどき BeginWrite()が終了しても呼び出しを終了する前にポートを閉じるには、 Close()はBeginWrite()が保留中であればハングさせます。 私はEndWrite()を呼び出そうとしましたが、BeginWrite() が保留中の場合にもハングします。どうすればBeginWrite()スレッドを終了できますか? にはBaseStream.Abort()などはありません。BaseStreamを使用してシリアルCOMポートIOアプリケーションでBeginWriteを強制終了
おかげ
私はストリームを放棄していると、それは結構です。ただし、再オープンしようとすると失敗します。おそらくそれはできないと思う。 興味深いことに、私は同じことをし、うまく動作する市販のwin32コンソールアプリを持っています。 ありがとうございます。 – HiteshP
一度に書き込むデータ量を減らしましたか?その後、より速く閉じることができます。 – chris166