/// <summary> /// 終了する /// </summary> public void End() { this.isOver = true; // Workerを開放する this.refreshSpellOverlaysWorker?.Stop(); this.refreshTickerOverlaysWorker?.Stop(); this.detectLogsWorker?.Abort(); this.syncHotbarWorker?.Abort(); this.refreshSpellOverlaysWorker = null; this.refreshTickerOverlaysWorker = null; this.detectLogsWorker = null; this.syncHotbarWorker = 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(); Settings.Default.DeInit(); SpellPanelTable.Instance.Save(); SpellTable.Instance.Save(); TickerTable.Instance.Save(); TagTable.Instance.Save(); // サウンドコントローラを停止する SoundController.Instance.End(); // テーブルコンパイラを停止する TableCompiler.Instance.End(); TableCompiler.Free(); // FFXIVのスキャンを停止する XIVPluginHelper.Instance.End(); XIVPluginHelper.Free(); }
public void EndPlugin() { if (!this.isLoaded) { return; } try { this.Logger.Trace("start DeInitPlugin"); // 設定ファイルを保存する Settings.Instance.Save(); FFXIV.Framework.Config.Save(); FFXIV.Framework.Config.Free(); EnvironmentHelper.GarbageLogs(); // ターゲット情報ワーカを終了する MainWorker.Instance.End(); // FFXIVプラグインへのアクセスを終了する XIVPluginHelper.Instance.End(); XIVPluginHelper.Free(); // 参照を開放する WavePlayer.Free(); MainWorker.Free(); Settings.Free(); if (this.PluginStatusLabel != null) { 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(); } }