//通知核心将解析消息加入解析队列 public void Notify_decode(Message4Kernel msg) { lock (_sync_decode) { if (_enabled) { _queue_decode.Enqueue(msg); log.Debug("解析消息添加到队列:" + msg.filePath); /** * //如果当前队列和正在处理的消息中不包含msg,则添加msg * if (cureentMessage != null) * { * if (cureentMessage.fileName != msg.fileName && !isInQueue(msg)) * { * _queue_decode.Enqueue(msg); * log.Debug("解析消息添加到队列:" + msg.filePath); * } * } * else * { * if(!isInQueue(msg)) * { * _queue_decode.Enqueue(msg); * log.Debug("解析消息添加到队列:" + msg.filePath); * } * }**/ } } }
private Boolean isInQueue(Message4Kernel msg) { foreach (Message4Kernel message4Kernel in _queue_decode) { if (msg.fileName == message4Kernel.fileName) { return(true); } } return(false); }
public void Decode(Message4Kernel msg) { switch (msg.fileType) { case "*.csv": break; case "*.mdb": { string dbServer = Path.Combine(msg.filePath, msg.fileName); if (ini.IniReadValue("配置", "ChooseInstrument").Equals("W110")) { log.Debug(msg.filePath + ":按照W110设备设置进行解析"); msg.dbUser = "******"; msg.dbPwd = ""; W110Decode w110Decode = new W110Decode(); w110Decode.DataDecode(msg.id, msg.fileType, dbServer, msg.dbUser, msg.dbPwd); } if (ini.IniReadValue("配置", "ChooseInstrument").Equals("W119")) { msg.dbUser = "******"; msg.dbPwd = "88888888"; W119Decode w119Decode = new W119Decode(); w119Decode.DataDecode(msg.id, msg.fileType, dbServer, msg.dbUser, msg.dbPwd); } if (ini.IniReadValue("配置", "ChooseInstrument").Equals("W120")) { msg.dbUser = "******"; msg.dbPwd = ""; W120Decode w120Decode = new W120Decode(); w120Decode.DataDecode(msg.id, msg.fileType, dbServer, msg.dbUser, msg.dbPwd); } break; } } }
public Kernel(String serverUrl) { _serverUrl = serverUrl; _enabled = true; _exited_decode = new ManualResetEvent(initialState: false); _queue_decode = new Queue <Message4Kernel>(); _sync_decode = ((ICollection)_queue_decode).SyncRoot; //解析线程 ThreadPool.QueueUserWorkItem(delegate { while (_enabled || Count_decode > 0) { Message4Kernel decodeMessage = dequeue_decode(); cureentMessage = decodeMessage; if (decodeMessage != null) { log.Info("开始处理文件: " + decodeMessage.fileName); try { DecodeFactory.Instance.Decode(decodeMessage); } catch (Exception exception) { log.Error("Decode ", exception); } } else { Thread.Sleep(500); } } _exited_decode.Set(); }); _exited_send = new ManualResetEvent(initialState: false); _queue_send = new Queue <NSampleModel>(); _sync_send = ((ICollection)_queue_send).SyncRoot; //发送线程 ThreadPool.QueueUserWorkItem(delegate { while (_enabled || Count_send > 0) { NSampleModel sendMessage = dequeue_send(); if (sendMessage != null && sendMessage.sampleModel != null) { log.Info("开始发送样本号: " + sendMessage.sampleModel.sampleNo); try { DecodeFactory.Instance.SendToServer(sendMessage); } catch (Exception exception) { log.Error("Send ", exception); } } else { Thread.Sleep(500); } } _exited_send.Set(); }); }