SerialPort.DataReceived メソッドから供給される汎用 Queue オブジェクトがあります。
ToArray() メソッドを呼び出すと、「宛先配列の長さが足りません」という例外が発生することがあります。コード:
byte[] tmpArray;
try
{
tmpArray = queue.ToArray();
}
catch (Exception ex)
{
記録のために: queue.Count が 500 を超えることはありません。
これはおそらくスレッドの問題ですが、例外がわかりません。キューの ToArray() メソッドで宛先配列が短すぎるのはいつですか?
これがスレッドの問題である場合、SerialPort から Queue にデータを取得する際のベスト プラクティスは何ですか?
ところで:書き込み前にキューをロックします。おそらく、ToArray() の前にもロックする必要がありますか?