コード例 #1
0
        //private async void CheckVersion()
        //{
        //    StartScreenViewModel startViewModel = this;
        //    startViewModel._sw.Start();
        //    startViewModel.CurrentMessage = "Проверка обновлений";
        //    NewVersionUpdater updater = new NewVersionUpdater();
        //    bool isNeedUpdate = false;
        //    try
        //    {
        //        isNeedUpdate = await updater.IsNeedUpdate();
        //    }
        //    catch (Exception ex)
        //    {
        //        await startViewModel.ShowErrorDialogAsync("Проверка обновлений, не удалась. Подождите 10-30 секунд и попробуйте еще раз " + Environment.NewLine + " " + ex.Message);
        //        if (await startViewModel.ShowYesOrNoDialogAsync("Запрос", "Можем попробовать продолжить без обновлений, но возможна не стабильная работа. Продолжить?") == MessageDialogResult.Negative)
        //        {
        //            Application.Current.Invoke(new Action(Application.Current.Shutdown));
        //            return;
        //        }
        //    }
        //    if (isNeedUpdate)
        //    {
        //        int num1 = 1;
        //        object obj;
        //        do
        //        {
        //            int num2 = 0;
        //            try
        //            {
        //                startViewModel.CurrentMessage = "Загружаем обновления";
        //                await updater.DownLoadUpdater();
        //                updater.LaunchUpdater();
        //            }
        //            catch (Exception ex)
        //            {
        //                obj = (object)ex;
        //                num2 = 1;
        //            }
        //            if (num2 == 1)
        //                ++num1;
        //            else
        //                goto label_19;
        //        }
        //        while (await startViewModel.ShowYesOrNoDialogAsync("Ошибка", string.Format("Updater не загрузился. Попробовать {0} раз?", (object)num1)) != MessageDialogResult.Negative);
        //        Process.Start("");
        //        Application.Current.Invoke(new Action(Application.Current.Shutdown));
        //        return;
        //    label_19:
        //        obj = (object)null;
        //        Application.Current.Invoke(new Action(Application.Current.Shutdown));
        //    }
        //    else
        //    {
        //        startViewModel.CurrentMessage = "Проверка обновлений завершена";
        //        await startViewModel.Sleep(startViewModel._loadLimit, startViewModel._sw.Elapsed);
        //        startViewModel.LoadCurrencies();
        //    }
        //}

        private async void LoadCurrencies()
        {
            StartScreenViewModel startViewModel = this;

            startViewModel._sw.Restart();
            startViewModel.CurrentMessage = "Загрузка курсов валют";
            CurrenciesDownloader downloader = new CurrenciesDownloader();

            try
            {
                Dictionary <ECurrency, Decimal> actualCursesFromCb = await downloader.GetActualCursesFromCb();

                startViewModel._settigs.UserSettings.Curses = actualCursesFromCb;
            }
            catch (Exception ex1)
            {
                await startViewModel.ShowErrorDialogAsync("Ошибка загрузки курса с Цб. Пробуем загрузить с зеркала", ex1);

                try
                {
                    Dictionary <ECurrency, Decimal> cursesFromMirror = await downloader.GetActualCursesFromMirror();

                    startViewModel._settigs.UserSettings.Curses = cursesFromMirror;
                }
                catch (Exception ex2)
                {
                    await startViewModel.ShowErrorDialogAsync("Ошибка загрузки курса с зеркала", ex2);

                    if (await startViewModel.ShowYesOrNoDialogAsync("Запрос", "Вы хотите продолжить без актуальных курсов валют?") == MessageDialogResult.Negative)
                    {
                        Application.Current.Invoke((Action)(() => Application.Current.Shutdown()));
                        return;
                    }
                    if (startViewModel._settigs.UserSettings.Curses == null)
                    {
                        startViewModel._settigs.UserSettings.Curses = downloader.GetDefaultCurses();
                    }
                }
            }
            try
            {
                CurrencyItemManager currencyItemManager = new CurrencyItemManager(startViewModel._settigs.UserSettings.CurrencyItems, downloader);
                currencyItemManager.UpdateCurses(startViewModel._settigs.UserSettings.Curses);
                startViewModel._settigs.UserSettings.CurrencyItems = currencyItemManager.GetCurrencyUserSettings();
            }
            catch (Exception ex)
            {
                await startViewModel.ShowErrorDialogAsync("Ошибка обновление актуальных курсов", ex);
            }
            await startViewModel.Sleep(startViewModel._loadLimit, startViewModel._sw.Elapsed);

            startViewModel.LoadFrigateSettings();
        }