コード例 #1
0
        protected DataModel(ToolStripProgressBar progressBar, int incrementor, string selectQuery, string tableName)
        {
            var context = SynchronizationContext.Current;

            DmLoadType = DataModelLoadSyncType.Asyncronize;
            ThreadPool.QueueUserWorkItem((progress) =>
            {
                try
                {
                    DmLoadState = DataModelLoadState.Loading;
                    using (var connection = new DBConnection())
                        using (var command = DBConnection.CreateCommand())
                        {
                            command.CommandText = selectQuery;
                            DbAccessSemaphore.WaitOne();
                            Interlocked.Exchange(ref _table, connection.SqlSelectTable(tableName, command));
                        }
                    DbAccessSemaphore.Release();
                    ConfigureTable();
                    lock (LockObj)
                    {
                        DataSetManager.AddTable(Table);
                    }
                    DmLoadState = DataModelLoadState.SuccessLoad;
                    if (progress != null)
                    {
                        context.Post(_ => {
                            progressBar.Value += incrementor;
                            if (progressBar.Value == progressBar.Maximum)
                            {
                                progressBar.Visible = false;
                                //Если мы загрузили все данные, то запускаем CallbackUpdater
                                DataModelsCallbackUpdater.GetInstance().Run();
                                CalcDataModelsUpdater.GetInstance().Run();
                            }
                        }, null);
                    }
                }
                catch (SqlException e)
                {
                    lock (LockObj)
                    {
                        MessageBox.Show(String.Format(CultureInfo.InvariantCulture,
                                                      "Произошла ошибка при загрузке данных из базы данных. Подробная ошибка: {0}", e.Message), "Ошибка",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        DmLoadState = DataModelLoadState.ErrorLoad;
                        Application.Exit();
                    }
                }
                catch (DataModelException e)
                {
                    MessageBox.Show(e.Message, "Ошибка",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                    DmLoadState = DataModelLoadState.ErrorLoad;
                }
            }, progressBar);
        }
コード例 #2
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            UserDomain user = null;

            if (LicenseSoftwareSettings.UseLdap)
            {
                user = UserDomain.Current;
            }
            if (user == null)
            {
                toolStripLabelHelloUser.Text = "";
            }
            else
            {
                toolStripLabelHelloUser.Text = @"Здравствуйте, " + user.DisplayName;
            }
            //Загружаем права пользователя
            AccessControl.LoadPriveleges();
            if (AccessControl.HasNoPriveleges())
            {
                MessageBox.Show(@"У вас нет прав на использование данного приложения", @"Ошибка",
                                MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                Application.Exit();
                return;
            }
            //Инициируем начальные параметры CallbackUpdater
            DataModelsCallbackUpdater.GetInstance().Initialize();
            //Загружаем данные в асинхронном режиме
            PreLoadData();
            //Обновляем состояние главного меню
            MainMenuStateUpdate();
            if (string.IsNullOrEmpty(_computerNameCommandLineArg))
            {
                return;
            }
            var device = DataModelHelper.FilterRows(DevicesDataModel.GetInstance().Select())
                         .FirstOrDefault(r => r.Field <string>("Device Name").Contains(_computerNameCommandLineArg));

            if (device == null)
            {
                return;
            }
            var viewport = ViewportFactory.CreateViewport(this, ViewportType.InstallationsViewport);

            viewport.DynamicFilter = string.Format("[ID Computer] = {0}", device.Field <int>("ID Device"));

            if (((IMenuController)viewport).CanLoadData())
            {
                ((IMenuController)viewport).LoadData();
            }
            AddViewport(viewport);
            ChangeMainMenuState();
            StatusBarStateUpdate();
            ChangeViewportsSelectProprty();
        }