我有一个从 SerialPort.DataReceived 方法提供的通用 Queue 对象。
有时我在调用 ToArray() 方法时收到异常“目标数组不够长”。编码:
byte[] tmpArray;
try
{
tmpArray = queue.ToArray();
}
catch (Exception ex)
{
记录一下:queue.Count 永远不会超过 500。
尽管这很可能是线程问题,但我不明白异常。队列的 ToArray() 方法中的目标数组何时会太短?
如果这是一个线程问题,那么将数据从 SerialPort 获取到队列时的最佳实践是什么?
顺便说一句:我在写之前锁定队列。也许我也应该在 ToArray() 之前锁定它?