/// <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(); }
/// <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(); } }); }