public ShellForm()
        {
            InitializeComponent();

            Text = Properties.Settings.Default.ApplicationFriendlyName;

            _logUC = new LogUC {
                Padding = _defaultContentAreaPadding, Dock = DockStyle.Fill
            };
            AppLogger.SetTargetInvoking(_logUC.UpdateLogs);
            _logUC.UpdateLogs(AppLogger.GetLogs()); // Load logs that may have been written before delegate could be set.

            MainContentPanel.Controls.Add(new IntroductionUC {
                Padding = _defaultContentAreaPadding, Dock = DockStyle.Fill
            });
        }
Exemple #2
0
        public MainWindow()
        {
            InitializeComponent();
            ////Application Icon for tray.

            TrayMenu = Resources["TrayMenu"] as System.Windows.Controls.ContextMenu;
            ni       = new NotifyIcon();
            string path = AppDomain.CurrentDomain.BaseDirectory;

            ni.Icon         = new System.Drawing.Icon(@"Source\Main.ico");
            ni.Visible      = true;
            ni.DoubleClick +=
                delegate(object sender, EventArgs args)
            {
                if ((args as MouseEventArgs).Button == MouseButtons.Left)
                {
                    // по левой кнопке показываем или прячем окно
                    this.Show();
                    this.WindowState = WindowState.Normal;
                }
            };

            ni.Click += delegate(object sender, EventArgs args)
            {
                if ((args as MouseEventArgs).Button == MouseButtons.Right)
                {
                    // по правой кнопке (и всем остальным) показываем меню
                    TrayMenu.IsOpen = true;
                    Activate(); // нужно отдать окну фокус, см. ниже
                }
            };


            //Creating User Interfaces
            opcSettingsUC = new OPCServerSettingsUC {
                isEnableWritingChecked = true
            };
            dataAccessSettingsUC    = new DataAccessSettingsUC();
            parametersUC            = new ParametersUC();
            serverSynchronizationUC = new ServerSynchronizationUC();
            logUC = new LogUC();


            //При запуске приложения проверяется роль хоста (чтение IP из БД). Если при старте компьютера
            //приложение стучится к БД раньше, чем запустится SQL сервер, будет произведена попытка прочитать роль еще раз
            //(кол-во попыток - в теле конструкции 'for')

            Task.Run(() =>
            {
                for (int i = 0; i < 5; i++)
                {
                    controllerRole = DefineHostRole();
                    Dispatcher.Invoke(() => serverSynchronizationUC.ServerSyncRoleTextBox.Text = controllerRole.ToString());
                    if (controllerRole != HostRole.ERROR)
                    {
                        break;
                    }
                    WriteToLog("Attempt to define Server role. Reading from DataBase failed!");
                    Thread.Sleep(2000);
                }
            }).ContinueWith((o) =>
            {
                //Создаем класс-контейнер для хранения параметров для передачи в контроллер перед началом расчетов
                controllerParameters = new ControllerParameters
                {
                    isEnableWriting     = opcSettingsUC.isEnableWritingChecked,
                    ControllerRole      = this.controllerRole,
                    OpcServerName       = Properties.Settings.Default.OPCServerName,
                    OpcServerSubstring  = Properties.Settings.Default.OPCServerSubString,
                    SingleTagNamesForRW = serverSynchronizationUC.singleTagNamesForRW
                };

                //Start Calculations after launching
                if (controllerRole != HostRole.ERROR)
                {
                    Task.Run(async() => await StartOperation());
                }
                else
                {
                    WriteToLog("Невозможно определить хост-роль сервера");
                }
            });
        }