小白点1995 2020-08-02 14:35 采纳率: 0%
浏览 56

c#队列语法?线程错误

一下功能想实现单队列类的一个单例模式,但是发现数据入队的时候,
成员是byte数组,调试没有问题,但是出队的时候,虽然数组长度对上了,
但是数组的数据内容都是0;

private static readonly QueueSignalTemplateMng instance = new QueueSignalTemplateMng();
        private QueueGroupMng<byte[]> queueMng = new QueueGroupMng<byte[]>(); 
        // 显示的static 构造函数
        // 没必要标记类型 - 在field初始化以前
        static QueueSignalTemplateMng()
        {

        }

        private QueueSignalTemplateMng()
        {
        }

        public static QueueSignalTemplateMng GetInstance()
        { 
            return instance; 
        }

        /// <summary>
        /// 分析接受过来的信息,处理粘连的报文
        /// </summary>
        public void disposeRecieveMess(byte[] in_arrByteMess, int in_iMessLength)
        {
            byte[] arrayTemp;

            int indexPos = 0, dateLength;
            while(true)
            { 
                if (HEAD1 == in_arrByteMess[indexPos] && HEAD2 == in_arrByteMess[indexPos + 1])
                {
                    dateLength = in_arrByteMess[indexPos + 2];
                    arrayTemp = new byte[dateLength];
                    Array.ConstrainedCopy(in_arrByteMess, indexPos, arrayTemp, 0, dateLength);
                    queueMng.QueueInsert(arrayTemp);
                    Array.Clear(arrayTemp, 0, arrayTemp.Length);
                    indexPos += dateLength;
                }
                else
                {
                    break;
                }
            }
        }

        public byte[] getDateArray()
        {
            byte[] array = queueMng.QueueOuputDate();
            return array;
        }

        public int DateArrayCount()
        {
            return queueMng.GetQueueCount();
        }
class QueueGroupMng<T>
    {
        Queue<T> DateQueue = new Queue<T>();

        /// <summary>
        /// 数据入队
        /// </summary>
        /// <param name="limitNum"></param>
        /// <param name="Date"></param>
        public void QueueInsert(T list)
        {
            DateQueue.Enqueue(list);
        }

        /// <summary>
        /// 数据出队
        /// </summary>
        /// <returns></returns>
        public T QueueOuputDate()
        {  
            T dateReturn = DateQueue.Dequeue(); 
            return dateReturn;
        }

        /// <summary>
        /// 获得当前队列中数据量
        /// </summary>
        /// <returns></returns>
        public int GetQueueCount()
        {
            int count = DateQueue.Count;
            return count;
        }

        public void ClearQueueCount()
        {
            DateQueue.Clear();
        }
    }

请问为何?

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-08-02 15:09
    关注

    Array.ConstrainedCopy(in_arrByteMess, indexPos, arrayTemp, 0, dateLength);
    在这里调试下,看看入队的数据是否正常

    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?