Esempio n. 1
0
        private void Refresh()
        {
            this.RaisePropertyChanged(nameof(VersionInfos));
            this.RaisePropertyChanged(nameof(Logs));

            AppLogger.Flush();
            HelpView.SendScrollToEndLog();
        }
Esempio n. 2
0
 private void App_Exit(object sender, ExitEventArgs e)
 {
     try
     {
         Config.Instance.Save();
         Thread.Sleep(50);
     }
     finally
     {
         AppLogger.Write("madoka End.");
         AppLogger.Flush();
     }
 }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        private void DetectProcessLoop()
        {
            Thread.Sleep(TimeSpan.FromSeconds(Config.Instance.ProcessScaningInterval));

            while (true)
            {
                Thread.Sleep(TimeSpan.FromSeconds(Config.Instance.ProcessScaningInterval));

                if (this.semaphore)
                {
                    continue;
                }

                try
                {
                    this.semaphore = true;
                    this.DetectProcess();
                }
                catch (ThreadAbortException)
                {
                    return;
                }
                catch (Exception ex)
                {
                    AppLogger.Error(
                        "プロセススキャンスレッドで予期しない例外を検知しました。",
                        ex);
                    AppLogger.Flush();

                    Thread.Sleep(TimeSpan.FromSeconds(10));
                }
                finally
                {
                    this.semaphore = false;
                }
            }
        }
Esempio n. 6
0
        private void App_DispatcherUnhandledException(
            object sender,
            DispatcherUnhandledExceptionEventArgs e)
        {
            try
            {
                Config.Instance.Save();
                Thread.Sleep(50);

                if (this.MainWindow != null)
                {
                    MessageBoxHelper.ShowDialogMessageWindow(
                        "madoka - Fatal",
                        "予期しない例外を検知しました。アプリケーションを終了します。",
                        e.Exception);
                }
                else
                {
                    MessageBox.Show(
                        "予期しない例外を検知しました。アプリケーションを終了します。\n\n" +
                        e.Exception,
                        "madoka - Fatal",
                        MessageBoxButton.OK,
                        MessageBoxImage.Error);
                }
            }
            finally
            {
                AppLogger.Fatal(
                    "Unhandled Exception. 予期しない例外が発生しました。",
                    e.Exception);

                AppLogger.Write("madoka Abort.");
                AppLogger.Flush();
            }
        }
Esempio n. 7
0
        public static async Task <bool> IsUpdateAsync(
            ReleaseChannels updateChannel)
        {
            SetupSSL();

            // アップデートChannelを保存する
            LastCheckedUpdateChannel = updateChannel;

            if (string.IsNullOrEmpty(UpdateSourceUri))
            {
                return(false);
            }

            var now            = DateTimeOffset.Now;
            var targetAssembly = Assembly.GetEntryAssembly();

            try
            {
                // リリースノートを取得する
                var notes = await ReleaseNotes.DeserializeAsync(new Uri(UpdateSourceUri));

                if (notes == null)
                {
                    AppLogger.Error($"Update checker error. RELEASE_NOTES.xml not found. uri={UpdateSourceUri}");
                    return(false);
                }

                // より新しいバージョンがあるか?
                var newer = notes.GetNewerVersion(
                    targetAssembly,
                    updateChannel);
                if (newer == null)
                {
                    AppLogger.Write("Update checker. this version is up-to-date.");
                    return(false);
                }

                AppLogger.Write($"Update checker found newer version. v{newer.Version}-{newer.ReleaseChannel}");

                // アップデートWindowを表示する
                await Application.Current.Dispatcher.InvokeAsync(() =>
                {
                    UpdateCheckerView.Show(
                        notes.Name,
                        targetAssembly,
                        newer);
                });
            }
            catch (Exception ex)
            {
                AppLogger.Fatal("Update checker fatal error.", ex);
                throw;
            }
            finally
            {
                LastUpdateCheckCallback?.Invoke(now);
                AppLogger.Flush();
            }

            return(true);
        }