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

            startViewModel._sw.Restart();
            startViewModel.CurrentMessage = "Получение настроек сервера";
            try
            {
                string str = startViewModel._wbClient.DownloadString(new Uri("http://theforks.ru/set.txt"));
                startViewModel._settigs.Data = str;
            }
            catch
            {
                if (string.IsNullOrWhiteSpace(startViewModel._settigs.Data))
                {
                    await startViewModel.ShowErrorDialogAsync("Получение настроек не удалось. Попробуйте позже.");

                    Application.Current.Invoke(new Action(Application.Current.Shutdown));
                    return;
                }
                if (await startViewModel.ShowYesOrNoDialogAsync("Запрос", "Продолжить без актуальных настроек сервера? Программа может работать не стабильно!") == MessageDialogResult.Negative)
                {
                    Application.Current.Invoke(new Action(Application.Current.Shutdown));
                    return;
                }
            }
            startViewModel.LoadMirrors();
        }
        //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();
        }
        private async void UpdateSettings()
        {
            StartScreenViewModel startViewModel = this;

            try
            {
                SettingVersionUpdater.Update(startViewModel._settigs);
                Settings.Save(startViewModel._settigs);
            }
            catch
            {
                await startViewModel.ShowErrorDialogAsync("Не удалось обновить настройки. Все настройки будут сброшены!");
            }

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

            startViewModel._sw.Restart();
            startViewModel.CurrentMessage = "Загрузка списка зеркал";
            try
            {
                Dictionary <EBookmakers, string> dictionary = JsonConvert.DeserializeObject <Dictionary <EBookmakers, string> >(startViewModel._wbClient.DownloadString(new Uri("http://theforks.ru/mirrors.txt")));
                foreach (Bookmaker bookmakers in startViewModel._settigs.UserSettings.BookmakersList)
                {
                    if (dictionary.ContainsKey(bookmakers.EBookmaker) && !string.IsNullOrWhiteSpace(dictionary[bookmakers.EBookmaker]))
                    {
                        bookmakers.OriginalUrl = dictionary[bookmakers.EBookmaker];
                        if (bookmakers.EBookmaker == EBookmakers._zenit)
                        {
                            bookmakers.OriginalUrl = bookmakers.OriginalUrl.Replace("m.", "");
                        }
                    }
                }
            }
            catch
            {
                await startViewModel.ShowErrorDialogAsync("Получение списка зеркал не удалось.");

                if (startViewModel._settigs.IsFirstRun)
                {
                    Application.Current.Invoke(new Action(Application.Current.Shutdown));
                    return;
                }
                if (await startViewModel.ShowYesOrNoDialogAsync("Запрос", "Продолжить без загрузки списка зеркал? Программа может работать не стабильно!") == MessageDialogResult.Negative)
                {
                    Application.Current.Invoke(new Action(Application.Current.Shutdown));
                    return;
                }
            }
            Settings.Save(startViewModel._settigs);
            await startViewModel.Sleep(startViewModel._loadLimit, startViewModel._sw.Elapsed);

            Application.Current.Invoke(startViewModel._closeCallback);
        }