Ejemplo n.º 1
0
        public static void Main()
        {
            App app = new App();

            // splash

            Splasher.Splash = new View.SplashScreen();
            Splasher.ShowSplash();
            //for (int i = 0; i < 5000; i += 1)
            //{
            //    MessageListener.Instance.ReceiveMessage(string.Format("Load module {0}", i));
            //    Thread.Sleep(1);
            //}

            // таймаут запуска приложения
            string cfgValue     = CfgFileHelper.GetAppSetting("StartTimeout");
            int    startTimeout = 0;

            if (cfgValue != null)
            {
                startTimeout = cfgValue.ToInt();
            }
            if (startTimeout != 0)
            {
                for (int i = startTimeout; i > 0; i--)
                {
                    MessageListener.Instance.ReceiveMessage($"Таймаут запуска приложения - {i} секунд.");
                    System.Threading.Thread.Sleep(1000);
                }
            }

            MessageListener.Instance.ReceiveMessage("Инициализация журнала событий...");
            cfgValue = AppLib.InitAppLogger();
            if (cfgValue != null)
            {
                appExit(1, "Ошибка инициализации журнала приложения: " + cfgValue);
            }
            System.Threading.Thread.Sleep(500);

            AppLib.WriteLogInfoMessage("****  Start application  ****");

            // защита PSW-файлом
            // текст в MessageListener.Instance прибинден к текстовому полю на сплэше
            MessageListener.Instance.ReceiveMessage("Проверка лицензии...");
            pswLib.CheckProtectedResult checkProtectedResult;
            if (pswLib.Hardware.IsCurrentAppProtected("ClientOrderQueue", out checkProtectedResult) == false)
            {
                AppLib.WriteLogErrorMessage(checkProtectedResult.LogMessage);
                appExit(2, checkProtectedResult.CustomMessage);
                return;
            }
            System.Threading.Thread.Sleep(500);

            // информация о файлах, сборках и настройках из конфиг-файлов
            MessageListener.Instance.ReceiveMessage("Получаю информацию о сборках и настройках...");
            // для хранения в свойствах приложения (из config-файла или др.)
            setAppGlobalValues();
            AppLib.WriteLogInfoMessage(" - файл: {0}, Version {1}", AppEnvironment.GetAppFullFile(), AppEnvironment.GetAppVersion());
            ITSAssemblyInfo asmInfo = new ITSAssemblyInfo("IntegraLib");

            AppLib.WriteLogInfoMessage(" - Integra lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version);
            asmInfo = new ITSAssemblyInfo("IntegraWPFLib");
            AppLib.WriteLogInfoMessage(" - Integra WPF lib: '{0}', Version {1}", asmInfo.FullFileName, asmInfo.Version);

            AppLib.WriteLogInfoMessage("Системное окружение: " + AppEnvironment.GetEnvironmentString());
            AppLib.WriteLogInfoMessage("Настройки из config-файла: " + CfgFileHelper.GetAppSettingsFromConfigFile());

            // флажки для логов
            cfgValue = CfgFileHelper.GetAppSetting("IsWriteTraceMessages");
            WpfHelper.SetAppGlobalValue("IsWriteTraceMessages", cfgValue.ToBool());
            System.Threading.Thread.Sleep(300);

            // проверить доступность БД
            MessageListener.Instance.ReceiveMessage("Проверяю доступность к базе данных...");
            AppLib.CheckDBConnection(typeof(KDSContext));

            // настройка приложения
            app.InitializeComponent();  // определенные в app.xaml

            MessageListener.Instance.ReceiveMessage("Работаю...");
            View.MainWindow mWindow = new View.MainWindow();
            try
            {
                app.Run(mWindow);
            }
            catch (Exception ex)
            {
                AppLib.WriteLogErrorMessage(ex.ToString());
                MessageBox.Show(ex.Message, "Error Application", MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
            }

            AppLib.WriteLogInfoMessage("****  End application  ****");
        }