private void virtualMeterTask(object state) { while (isRunning) { for (int m = 0; m < homegenie.Modules.Count; m++) { var module = homegenie.Modules[m]; ModuleParameter parameter = null; parameter = module.Properties.Find(delegate(ModuleParameter mp) { return(mp.Name == ModuleParameters.MODPAR_VIRTUALMETER_WATTS); }); if (parameter == null) { continue; } else { try { double watts = double.Parse(parameter.Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture); if (watts > 0) { parameter = module.Properties.Find(delegate(ModuleParameter mp) { return(mp.Name == ModuleParameters.MODPAR_STATUS_LEVEL); }); double level = double.Parse(parameter.Value.Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture); double fuzzyness = (new Random().Next(0, 50) - 25) / 100D; // homegenie.migService_InterfacePropertyChanged(new InterfacePropertyChangedAction() { Domain = module.Domain, SourceId = module.Address, SourceType = module.Description, Path = ModuleParameters.MODPAR_METER_WATTS, Value = level == 0 ? "0.0" : ((watts * level) + fuzzyness).ToString(System.Globalization.CultureInfo.InvariantCulture) }); // Thread.Sleep(10); } } catch { } } } Thread.Sleep(reportFrequency); } }