private static void StatusConnect(Main_F Form) { try { while (true) { bool Status = false; try { using (var Connect = new NpgsqlConnection(SystemArgs.ConnectString)) { Connect.Open(); using (var Command = new NpgsqlCommand("SELECT 1", Connect)) { using (var Reader = Command.ExecuteReader()) { while (Reader.Read()) { Status = true; } } } Connect.Close(); } } catch (Exception) { Status = false; throw; } SystemArgs.StatusConnect = Status; if (Status) { Form.ConnectDB_TB.BeginInvoke(new MethodInvoker(delegate { Form.ConnectDB_TB.Text = "Установлено"; Form.ConnectDB_TB.BackColor = Color.FromArgb(188, 220, 244); })); } Thread.Sleep(1000); } } catch (Exception) { Form.ConnectDB_TB.BeginInvoke(new MethodInvoker(delegate { Form.ConnectDB_TB.Text = "Не установлено"; Form.ConnectDB_TB.BackColor = Color.Red; if (MessageBox.Show("Соединение с базой данных потеряно. Восстановите подключение и перезапустите программное обеспечение", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error) == DialogResult.OK) { SystemArgs.PrintLog("Ошибка при подключении к БД"); Application.Exit(); } })); } }
public static async void StatusConnectAsync(Main_F Form) { await Task.Run(() => StatusConnect(Form)); }