100*1024*1024 の受信バッファ サイズは巨大です! このサイズが必要なのか、実際のシリアル ポート バッファが必要なのか、まったく疑わしいと思います。
レシーバーの物理的な受信バッファーがオーバーフローしている可能性があるため、フロー制御の使用を検討する必要がある場合があります。これにより、レシーバーがトランスミッターに「ちょっと待って、しばらく送信を停止してください。最初に持っているものを処理させてください」と効果的に言うことができます。
ハードウェア フロー制御は、(一般的に) RTS (Request To Send) および CTS (Clear To Send) ピンを介して利用されます。
この記事を見て、それについてもう少し説明します。
個人的には、シリアル ポートの ReceivedBytesThreshold プロパティをデフォルト値の 1 のままにして、DataReceived イベントを処理することをお勧めします。明日には、20 バイト、あるいは 5 バイトのメッセージを読む必要があるかもしれません。将来、可変長のメッセージを読み取る必要があるのではないでしょうか? しきい値を 1 のままにしておくと、現在および将来受信されるすべてのバイトを処理できることを意味します。
このしきい値は、バッファに少なくとも1 バイトある場合にイベントが発生することを意味します。もっとあるかもしれませんし、おそらくそうなるでしょう。1 バイトを受信するたびに起動するとは限らないことに注意してください。各イベントで、BytesToRead プロパティを確認し、この数を独自のバッファーに読み込む必要があります。
1 バイトを受信するたびにイベントが発生するとは限らないことを繰り返しておきましょう。
また、DataReceived イベント ハンドラー内でできる限り少ないことを行うことをお勧めします。受信したバイトをバッファに読み込み、さらに処理するために完了したメッセージをキューに追加しますが、他にはほとんど何もしません。
また、 RS232の標準最大仕様は速度 19200 ボー、ケーブル長 50 フィートであることに注意してください。それ以上のものは未定義です。一般に、速度を高速にするには、より優れたケーブル (より低い静電容量) とより短いケーブル長が必要です。モーター、モーターインバーター、ライブケーブルなどの他の「ノイズの多い」アイテムの近くで実行されていないことを確認してください。