/// <summary> /// 終了する /// </summary> public void End() { this.isOver = true; // 戦闘分析を開放する CombatAnalyzer.Default.Denitialize(); // Workerを開放する this.refreshSpellOverlaysWorker?.Stop(); this.refreshTickerOverlaysWorker?.Stop(); this.detectLogsWorker?.Abort(); this.refreshSpellOverlaysWorker = null; this.refreshTickerOverlaysWorker = null; this.detectLogsWorker = null; this.backgroudWorker?.Stop(); this.backgroudWorker?.Dispose(); this.backgroudWorker = null; // ログバッファを開放する if (this.LogBuffer != null) { this.LogBuffer.Dispose(); this.LogBuffer = null; } // Windowを閉じる SpellsController.Instance.ClosePanels(); TickersController.Instance.CloseTelops(); SpellsController.Instance.ExecuteClosePanels(); TickersController.Instance.ExecuteCloseTelops(); // 設定を保存する Settings.Default.Save(); SpellPanelTable.Instance.Save(); SpellTable.Instance.Save(); TickerTable.Instance.Save(); TagTable.Instance.Save(); // サウンドコントローラを停止する SoundController.Instance.End(); // テーブルコンパイラを停止する TableCompiler.Instance.End(); TableCompiler.Free(); // FFXIVのスキャンを停止する FFXIVPlugin.Instance.End(); FFXIVPlugin.Free(); }
/// <summary> /// 開始する /// </summary> public void Begin() { this.isOver = false; // FFXIVのスキャンを開始する FFXIVPlugin.Initialize(); FFXIVPlugin.Instance.Start(); // ログバッファを生成する this.LogBuffer = new LogBuffer(); // テーブルコンパイラを開始する TableCompiler.Initialize(); TableCompiler.Instance.Begin(); // 戦闘分析を初期化する CombatAnalyzer.Default.Initialize(); // サウンドコントローラを開始する SoundController.Instance.Begin(); // Overlayの更新スレッドを開始する this.BeginOverlaysThread(); // ログ監視タイマを開始する this.detectLogsWorker = new ThreadWorker(() => { this.DetectLogsCore(); }, 0, nameof(this.detectLogsWorker)); // Backgroudスレッドを開始する this.backgroudWorker = new System.Timers.Timer(); this.backgroudWorker.AutoReset = true; this.backgroudWorker.Interval = 5000; this.backgroudWorker.Elapsed += (s, e) => { this.BackgroundCore(); }; this.detectLogsWorker.Run(); this.backgroudWorker.Start(); }
public void EndPlugin() { try { EnvironmentHelper.GarbageLogs(); this.Logger.Trace("start DeInitPlugin"); // ターゲット情報ワーカを終了する MainWorker.Instance.End(); // FFXIVプラグインへのアクセスを終了する FFXIVPlugin.Instance.End(); EnmityPlugin.Free(); FFXIVPlugin.Free(); FFXIVReader.Free(); // 設定ファイルを保存する Settings.Instance.Save(); // 参照を開放する WavePlayer.Free(); MainWorker.Free(); Settings.Free(); this.PluginStatusLabel.Text = "Plugin exited."; this.Logger.Trace("end DeInitPlugin. succeeded."); } catch (Exception ex) { this.Logger.Fatal(ex, "DeInitPlugin error."); this.ShowMessage("DeInitPlugin error.", ex); } finally { AppLog.FlushAll(); } }