CF2.0 で C# のシリアル ポートと通信するために書いたコードを確認しているところです。信頼できないため、DataReceived イベントは使用していません。MSDN は次のように述べています。
DataReceived イベントは、受信したバイトごとに発生する保証はありません。BytesToRead プロパティを使用して、バッファ内で読み取るデータがどれだけ残っているかを判断します。
ポートを read() でポーリングし、読み取られたデータを処理するデリゲートを用意しています。「ポーリングが悪い」ということもどこかで読みました(説明はありません)。
ポーリングが悪い理由はありますか? 通常のスレッドに関する注意事項とは別に、ポートをポーリングする別のスレッド (バックグラウンド スレッド) があり、データが読み取られた後にスレッドが終了し、すべてテストされ、正常に動作します。