Exemplo n.º 1
0
        public async Task InitializeAsync()
        {
            await Task.Run(() =>
            {
                try
                {
                    var settingRepository      = new SettingRepository();
                    ColumnVisibleSetting.Value = settingRepository.GetColumnVisibleSetting();
                    AppSetting.Value           = settingRepository.GetAppSetting();

                    var isAutoImageSave           = AppSetting.Value.IsAutoImageSave.Value;
                    var isLatestScoreOutputAsText = AppSetting.Value.IsLatestScoreOutputAsText.Value;

                    _scoreRepository           = new ScoreRepository();
                    _scoreScreenShotRepository = ScoreScreenShotRepository.Create(isAutoImageSave);
                    _scoreFileRepository       = ScoreFileRepository.Create(isLatestScoreOutputAsText);
                    _fezScreenShooter          = new FEZScreenShooter();
                    _fezScoreAnalyzer          = new FEZScoreAnalyzer();

                    // DBファイルが無ければ作成、作成済みだが古いバージョンの場合は自動で最新のテーブル構成に更新する
                    _scoreRepository.Database.Migrate();

                    foreach (var score in _scoreRepository.ScoreDbSet.OrderBy(x => x.記録日時))
                    {
                        RegisterToDbUpdateWhenPropertyChanged(score);
                        ScoreCollection.Add(score);
                    }

                    LatestScore.Value = ScoreCollection.LastOrDefault() ?? new ScoreEntity();

                    // 監視状態ONの状態で終了していた場合は、初期化時に監視を開始する
                    if (AppSetting.Value.IsAccumulatingAtLastTime.Value)
                    {
                        StartToAccumulateScore();
                    }
                }
                catch (Exception ex)
                {
                    ApplicationError.HandleUnexpectedError(ex);
                }
            });

            // 初回起動時は案内メッセージを表示する(2回目以降は表示しない)
            if (AppSetting.Value.IsFirstBoot.Value)
            {
                MessageBox.Show(Properties.Resources.FirstBootInfoMessage, "Info");

                AppSetting.Value.IsFirstBoot.Value = false;
            }
        }