private void App_Exit(object sender, ExitEventArgs e) { try { // グローバルキーフックを解除する SharlayanController.UnsubscribeKeyHook(); Config.Instance.Save(); ChatOverlaysController.Instance.Stop(); } finally { this.UnlockDuplicateStart(); AppLogger.Write("RINGS End."); AppLogger.Flush(); } }
private void App_DispatcherUnhandledException( object sender, DispatcherUnhandledExceptionEventArgs e) { try { // グローバルキーフックを解除する SharlayanController.UnsubscribeKeyHook(); Config.Instance.Save(); if (this.MainWindow != null) { MessageBoxHelper.ShowDialogMessageWindow( "RINGS - Fatal", "予期しない例外を検知しました。アプリケーションを終了します。", e.Exception); } else { MessageBox.Show( "予期しない例外を検知しました。アプリケーションを終了します。\n\n" + e.Exception, "RINGS - Fatal", MessageBoxButton.OK, MessageBoxImage.Error); } } finally { this.UnlockDuplicateStart(); AppLogger.Fatal( "Unhandled Exception. 予期しない例外を検知しました。", e.Exception); AppLogger.Write("RINGS Abort."); AppLogger.Flush(); } }
private async void App_Startup(object sender, StartupEventArgs e) { var c = Config.Instance; c.SetStartup(c.IsStartupWithWindows); // WebBrowser のIEを最新版に指定する WebBrowserHelper.SetUseNewestWebBrowser(); await Task.WhenAll( ChatOverlaysController.Instance.StartAsync(), SharlayanController.Instance.StartAsync(), DiscordBotController.Instance.StartAsync(), Task.Run(() => { this.SetCredits(); HelpViewModel.Instance.OfficialSiteUri = new Uri(@"https://github.com/anoyetta/RINGS"); foreach (var asm in ReferenceAssemblies) { HelpViewModel.Instance.AddVersionInfos(asm); } HelpViewModel.Instance.GetReleaseChannelCallback = () => c.UpdateChannel; HelpViewModel.Instance.SetReleaseChannelCallback = value => c.UpdateChannel = value; })); AppLogger.Write("RINGS is chat communication enhancer for FFXIV, developed by anoyetta and best friends."); AppLogger.Write($"{c.AppNameWithVersion} Start."); #if DEBUG /* * new SandboxWindow().Show(); * WebViewOverlay.Instance.ShowUrl( * this.MainWindow, * @"https://www.jma.go.jp/jp/gms/imgs/0/infrared/1/201902251650-00.png"); */ #endif // アップデートを確認する UpdateChecker.ShutdownCallback = () => WPFHelper.Dispatcher.Invoke(() => this.CloseMainWindowCallback?.Invoke()); UpdateChecker.UpdateSourceUri = Config.Instance.UpdateSourceUri; UpdateChecker.LastUpdateCheckCallback = (lastUpdateTimestamp) => { Config.Instance.LastUpdateTimestamp = lastUpdateTimestamp; Config.Instance.Save(Config.FileName); }; await this.Dispatcher.InvokeAsync(async() => { await Task.Delay(TimeSpan.FromSeconds(0.1)); #if !DEBUG await UpdateChecker.IsUpdateAsync( Config.Instance.LastUpdateTimestamp, Config.Instance.UpdateChannel); #else #if false await UpdateChecker.IsUpdateAsync( Config.Instance.LastUpdateTimestamp, Config.Instance.UpdateChannel); #else // デバッグ用 // 強制的に最新バージョンを取得する await UpdateChecker.IsUpdateAsync( Config.Instance.LastUpdateTimestamp, Config.Instance.UpdateChannel, UpdateChecker.DefaultUpdateCheckInterval, true); #endif #endif }, DispatcherPriority.ApplicationIdle); // グローバルキーフックをセットする SharlayanController.SubscribeKeyHook(); }