public override void Stop() { Log("正在尝试停用插件"); var loadWindow = new Windows.LoadingWindowLight(); loadWindow.IsOpen = true; Conf.Delay(25); loadWindow.ProgressBar.Value = 30; Conf.Delay(25); var frame = new DispatcherFrame(); var thread = new Thread(() => { ALog("正在等待播放器停止"); Vars.CallPlayerStop = true; while (Vars.Player.IsAlive) { Thread.Sleep(100); } frame.Continue = false; }); thread.Start(); Dispatcher.PushFrame(frame); loadWindow.ProgressBar.Value = 100; Conf.Delay(25); loadWindow.IsOpen = false; Log("插件已停用"); IsEnabled = false; if ((Vars.ManagementWindow != null) && !Vars.ManagementWindow.WindowDisposed) { Vars.ManagementWindow.Dispatcher.Invoke(() => { Vars.ManagementWindow.CheckBox_IsPluginActive.IsChecked = false; }); } base.Stop(); }
public override async void Start() { Log("插件启动中"); var loadWindow = new Windows.LoadingWindowLight(); try { loadWindow.IsOpen = true; loadWindow.ProgressBar.Value = 30; Conf.Delay(10); ALog("正在检查配置"); await Conf.InitiateAsync(); loadWindow.ProgressBar.Value = 60; Conf.Delay(10); ALog("配置初始化成功"); ALog("正在启用播放器"); TTSPlayer.Init(); loadWindow.ProgressBar.Value = 80; Conf.Delay(10); if (Vars.CurrentConf.AutoUpdate) { ALog("正在启动更新检查"); Thread updateChecker = new Thread(() => UpdateThread()); updateChecker.Start(); } loadWindow.ProgressBar.Value = 100; Conf.Delay(10); loadWindow.IsOpen = false; Log("启动成功"); IsEnabled = true; if ((Vars.ManagementWindow != null) && !Vars.ManagementWindow.WindowDisposed) { Vars.ManagementWindow.Dispatcher.Invoke(() => { Vars.ManagementWindow.CheckBox_IsPluginActive.IsChecked = true; }); } base.Start(); } catch (Exception ex) { loadWindow.IsOpen = false; Log($"启动过程中出错: {ex}"); Windows.AsyncDialog.Open("启动失败,更多信息请查看日志(首页)。\n请在反馈错误时附加日志信息。\n\n如您在后期继续使用时遇到问题,请尝试重新启动弹幕姬。", "Re: TTSCat", MessageBoxIcon.Error); Log("启动失败"); } }