static private void _Extract() { try { //LogHelper.Write("[EXTRACT:BEGIN] _Extract thread is started", "UDPProcess._Extract"); while (IsRunning) { Thread.Sleep(ConfigHelper.DelayGetPending); try { //LogHelper.Write("[EXTRACT:LOOP] _Extracting", "UDPProcess._Extract"); ReturnInfo ri = Integrator.GetPendingMessages(); if (ri.Code != ReturnCode.Success) { //LogHelper.Write(ri, "UDPProcess._Transmit"); continue; } List <Message> list = null; if (ri.Data != null) { if (ri.Data is List <Message> ) { list = (List <Message>)ri.Data; } else if (ri.Data is Message[]) { list = new List <Message>((Message[])ri.Data); } else { //LogHelper.Write(string.Format("[EXTRACT:DO] Data is not List<Message> ({0})", ri.Data.GetType()), "UDPProcess._Transmit", LogLevel.ERROR); continue; } } lock (_cmd_SF) { foreach (Message msg in list) { /* * check delay to send MESSAGE */ //if (msg.time.Add(TimeSpan.FromMilliseconds(ConfigHelper.DelayToSend)) < DateTime.Now) // continue; if (!_Commands.ContainsKey(msg.device_eqid)) { //LogHelper.Write(string.Format("[EXTRACT:DO] Add new pending message (#EQID={0};#CMD={1};)", msg.device_eqid, msg.command), "UDPProcess._Transmit"); _Commands.Add(msg.device_eqid, msg); } } } } catch (Exception ex) { //LogHelper.Write(ex, "UDPProcess._Extract"); } } } catch (Exception ex) { //LogHelper.Write(ex, "UDPProcess._Extract"); } finally { //LogHelper.Write("[EXTRACT:END] _Extract thread is stopped", "UDPProcess._Extract"); } }