2

SerialPort.DataReceived メソッドから供給される汎用 Queue オブジェクトがあります。

ToArray() メソッドを呼び出すと、「宛先配列の長さが足りません」という例外が発生することがあります。コード:

        byte[] tmpArray;

        try
        {
            tmpArray = queue.ToArray();
        }
        catch (Exception ex) 
        {

記録のために: queue.Count が 500 を超えることはありません。

これはおそらくスレッドの問題ですが、例外がわかりません。キューの ToArray() メソッドで宛先配列が短すぎるのはいつですか?

これがスレッドの問題である場合、SerialPort から Queue にデータを取得する際のベスト プラクティスは何ですか?

ところで:書き込み前にキューをロックします。おそらく、ToArray() の前にもロックする必要がありますか?

4

1 に答える 1