public void AddMsgToQueue(uint ID, byte[] Msg) { TCANDATA CanMsg = new TCANDATA(Msg.Length); CanMsg.ID = ID; Array.Copy(Msg, CanMsg.Data, Msg.Length); _MsgQueue.Enqueue(CanMsg); }
public void AddMsgToQueue(uint ID, byte[] Msg) { //========================= TCANDATA CanData = new TCANDATA(Msg.Length); CanData.ID = ID; CanData.DataLen = Msg.Length; Array.Copy(Msg, CanData.Data, Msg.Length); _MsgQueue.Enqueue(CanData); }
//线程执行函数 private void DataHandlerMethod() { TCANDATA MsgData = new TCANDATA(); while (!cancelTokenSource.IsCancellationRequested) { Thread.Sleep(1); if (_MsgQueue.TryDequeue(out MsgData)) { //一个线程在对模块的属性进行处理,另外的线程在读取模块的属性, //需要进行同步处理,如获取马达位置属性时,不锁定则获取位置错误 //lock (SyncObject) //{ DoMsg(MsgData.Data); //} } } }