public static void TryConnect() { logger.Info("Пытаемся восстановить соединение..."); bool timeout = WaitOperationDlg.RunOperationWithDlg(new ThreadStart(DoConnect), connectionDB.ConnectionTimeout, "Соединяемся с сервером MySQL." ); if (!WaitResultIsOk || timeout) { MessageDialog md = new MessageDialog(null, DialogFlags.DestroyWithParent, MessageType.Question, ButtonsType.YesNo, "Соединение было разорвано. Повторить попытку подключения? В противном случае приложение завершит работу."); ResponseType result = (ResponseType)md.Run(); md.Destroy(); if (result == ResponseType.Yes) { TryConnect(); } else { Environment.Exit(1); } } }
public static bool RunOperationWithDlg(ThreadStart function, int timeout, string text = "") { WaitOperationDlg wait = null; bool timeOutReached = false; Thread thread = new Thread(function); thread.Start(); thread.Join(1000); //Ждем 1 секунду if (thread.IsAlive) //Если секунда прошла, а пинг еще не закончился - показываем окно { wait = new WaitOperationDlg(); if (text != "") { wait.labelMsg.LabelProp = text; } wait.Show(); timeOutReached = wait.StartProgressBar(thread, timeout); } if (wait != null) { wait.Destroy(); } return(timeOutReached); }
public static bool RunOperationWithDlg(ThreadStart function, int timeout, string text = "") { WaitOperationDlg wait = null; bool timeOutReached = false; Thread thread = new Thread (function); thread.Start (); thread.Join (1000); //Ждем 1 секунду if (thread.IsAlive) { //Если секунда прошла, а пинг еще не закончился - показываем окно wait = new WaitOperationDlg (); if (text != "") wait.labelMsg.LabelProp = text; wait.Show (); timeOutReached = wait.StartProgressBar (thread, timeout); } if (wait != null) wait.Destroy (); return timeOutReached; }
public static void CheckConnectionAlive() { if (DBMS != DataProviders.MySQL) { return; } logger.Info("Проверяем соединение..."); bool timeout = WaitOperationDlg.RunOperationWithDlg(new ThreadStart(DoPing), connectionDB.ConnectionTimeout, "Идет проверка соединения с базой данных."); if (timeout && ConnectionDB.State == System.Data.ConnectionState.Open) { ConnectionDB.Close(); //На линуксе есть случаи когда состояние соедиения не корректное. } if (connectionDB.State != System.Data.ConnectionState.Open) { logger.Warn("Соединение с сервером разорвано, пробуем пересоединится..."); TryConnect(); } logger.Info("Ок."); }