コード例 #1
0
ファイル: MainForm.cs プロジェクト: ashsvis/Enrollee
        /// <summary>
        /// Обработчик события первой загрузки главной формы
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EnrolleeForm_Load(object sender, EventArgs e)
        {
            // загрузка базы
            if (!SaverLoader.RestoreTables(_root, Properties.Settings.Default.ConnectionString))
            {
                // если загрузка с сервера не произошла, то пытаемся загрузится с локального файла
                var fileName = Path.ChangeExtension(Application.ExecutablePath, ".bin");
                if (File.Exists(fileName))
                {
                    _root = SaverLoader.LoadFromFile(fileName);
                    // при загрузке из файла корневой объект вновь создается, поэтому снова передаем ссылку на него
                    Helper.DefineRoot(_root);
                    // регистрируем таблицы сущностей после загрузки из файла
                    _root.RegistryTables();
                }
            }
            // ошибки операций с базой данных сохраняются в переменной OperationResult
            var result = SaverLoader.OperationResult;

            // показываем результат
            tsslStatusLabel.Text = string.IsNullOrWhiteSpace(result)
                                ? "Готово" : result.Substring(0, result.IndexOf('.') + 1);
            statusStrip1.Refresh();
            // небольшая задержка для показа заставки
            Thread.Sleep(1000);
            // заставку убираем
            Program.Splash.Close();
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: ashsvis/Enrollee
 /// <summary>
 /// Загрузка данных из базы асинхронно
 /// </summary>
 private void LoadFromBaseAsync()
 {
     // создается отдельная задача
     Task.Run(() =>
     {
         // загрузка модели из сервера
         SaverLoader.RestoreTables(_root, Properties.Settings.Default.ConnectionString);
         // создаем тело метода для показа результатов загрузки
         var method = new MethodInvoker(() =>
         {
             var result           = SaverLoader.OperationResult;
             tsslStatusLabel.Text = string.IsNullOrWhiteSpace(result)
                              ? "Готово" : result.Substring(0, result.IndexOf('.') + 1);
             statusStrip1.Refresh();
         });
         // вызываем метод показа результатов из отдельного потока
         if (InvokeRequired)
         {
             BeginInvoke(method);
         }
         else
         {
             method();
         }
     });
 }