public void TestAddSensor() { DtuNode node = new DtuNode() { DtuCode = "12345678", DtuId = 2, Type = DtuType.Gprs, Name = "Test", DacInterval = 5 }; new Thread(t => { uint i = 1; while (i < 100) { var senopera = new SensorOperation { Sensor = new Sensor { SensorID = i, ModuleNo = 2000 + 1, ChannelNo = 1, DtuID = 2 }, Action = Operations.Add }; node.AddSensorOperation(senopera); i++; } }).Start(); Thread.Sleep(10); new Thread(t => { uint i = 5; while (i < 50) { var senopera = new SensorOperation { OldSensorId = i, Action = Operations.Delete }; node.AddSensorOperation(senopera); i++; } }).Start(); Thread.Sleep(100); var t2 = new Thread(t => { node.UpDateSensor(); }); t2.Start(); t2.Join(); Console.WriteLine("dtunode's sensors count is {0}", node.Sensors.Count); }
private void UpdateSensorConfig(SensorOperation operation) { if (operation == null) { return; } if (operation.Action != Operations.ChangedDtu) { if (this.GetDtuNodeListener != null) { DtuNode node = this.GetDtuNodeListener(operation.Sensor.DtuID); if (node != null && operation.Sensor.SensorType != SensorType.Virtual) { node.AddSensorOperation(operation); } } } else { try { this.SensorChangedDtu(operation); } catch (Exception ex) { this._log.ErrorFormat("sensor {0} changed Dtu error {1}", operation.Sensor.SensorID, ex.Message); } } }