public async static Task <bool> refreshData() { mutexObj.WaitOne(); try { NpgsqlDataReader reader; NpgsqlCommand com; lamps = new List <Lamp>(); executors = new List <Executor>(); windows = new List <Window>(); sensors = new List <Sensor>(); if (isConnected) { await disconnect(); } await connect(); com = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Value\", \"Conf\", \"Auto\" FROM \"Lamps\"", __conn); reader = await com.ExecuteReaderAsync(); if (reader.HasRows) { while (reader.Read()) { int _id = Convert.ToInt32(reader.GetValue(0)); string _name = Convert.ToString(reader.GetValue(1)); int _val = Convert.ToInt32(reader.GetValue(2)); string _conf = Convert.ToString(reader.GetValue(3)); bool _isAuto = Convert.ToBoolean(reader.GetValue(4)); Lamp temp = new Lamp(_id, _name, _isAuto); temp.conf = new Configurator(_conf); temp.curValue = _val; lamps.Add(temp); } } com.Cancel(); await disconnect(); await connect(); com = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Value\" FROM \"Sensors\"", __conn); reader = await com.ExecuteReaderAsync(); if (reader.HasRows) { while (reader.Read()) { int _id = Convert.ToInt32(reader.GetValue(0)); string _name = Convert.ToString(reader.GetValue(1)); int _val = Convert.ToInt32(reader.GetValue(2)); Sensor temp = new Sensor(_val, _name); temp.id = _id; sensors.Add(temp); } } com.Cancel(); await disconnect(); await connect(); com = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Value\", \"Conf\", \"Auto\" FROM \"Executors\"", __conn); reader = await com.ExecuteReaderAsync(); if (reader.HasRows) { while (reader.Read()) { int _id = Convert.ToInt32(reader.GetValue(0)); string _name = Convert.ToString(reader.GetValue(1)); int _val = Convert.ToInt32(reader.GetValue(2)); string _conf = Convert.ToString(reader.GetValue(3)); bool _isAuto = Convert.ToBoolean(reader.GetValue(4)); Executor temp = new Executor(_id, _name, _isAuto); temp.conf = new Configurator(_conf); temp.curValue = _val; executors.Add(temp); } } com.Cancel(); await disconnect(); await connect(); com = new NpgsqlCommand("SELECT \"id\", \"Name\", \"Conf\", \"Auto\", \"Value\", \"minValue\", \"maxValue\" FROM \"Windows\"", __conn); reader = await com.ExecuteReaderAsync(); if (reader.HasRows) { while (reader.Read()) { int _id = Convert.ToInt32(reader.GetValue(0)); string _name = Convert.ToString(reader.GetValue(1)); string _conf = Convert.ToString(reader.GetValue(2)); bool _isAuto = Convert.ToBoolean(reader.GetValue(3)); int _val1 = Convert.ToInt32(reader.GetValue(4)); int _minValue1 = Convert.ToInt32(reader.GetValue(5)); int _maxValue1 = Convert.ToInt32(reader.GetValue(6)); Window temp = new Window(_id, _name, _isAuto); temp.conf = new Configurator(_conf); temp.curValueOfMotor = _val1; temp.minValueOfMotor = _minValue1; temp.maxValueOfMotor = _maxValue1; windows.Add(temp); } } await disconnect(); setFunctions(); mutexObj.ReleaseMutex(); return(true); } catch { mutexObj.ReleaseMutex(); return(false); } }