Exemple #1
0
        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;
        }
Exemple #4
0
        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("Ок.");
        }