static void Loop() { UdpClient udpServer = new UdpClient(int.Parse(GlobalConfig.UdpPort)); var Validator = new RuleFactory(true); while (true) { var remoteEP = new IPEndPoint(IPAddress.Any, int.Parse(GlobalConfig.UdpPort)); var data = udpServer.Receive(ref remoteEP); // listen on port 8888 var datastr = System.Text.Encoding.Default.GetString(data); Console.WriteLine("receive data from " + remoteEP.ToString()); Console.WriteLine("data: " + datastr); var obj = JsonConvert.DeserializeObject <SensorData>(datastr); if (obj != null) { obj.CreatedDate = DateTime.Now; //call power bi api //SendToPowerBI(sensorValue); SendToInfluxDB(obj); //check rule var violated = Validator.ValidateRule(obj); if (violated.Count > 0) { foreach (var vItem in violated) { Console.WriteLine($"--> alarm triggered [{vItem.CreatedDate}] : {vItem.Message}"); } } Thread.Sleep(2000); } } }