Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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("启动失败");
            }
        }
Exemplo n.º 3
0
        private async void Button_CheckConnectivity_Click(object sender, RoutedEventArgs e)
        {
            await DarkenAsync();

            TextBox_ExecutionResult.Text = "延迟测试已启动...";
            try
            {
                var thread = new Thread(() =>
                {
                    var window    = new LoadingWindowLight();
                    window.IsOpen = true;
                    var result    = new StringBuilder();
                    var ip        = new WebClient().DownloadString("https://apis.elepover.com/ip/");
                    result.Append($"设备 IP(公网): {ip}{Environment.NewLine}");
                    var listPing      = new List <List <long> >();
                    var listAddresses = new Dictionary <string, string>
                    {
                        { "Google", "https://translate.google.cn/" },
                        { "百度", "https://fanyi.baidu.com/" },
                        { "百度 (TSN)", "https://tsn.baidu.com/" },
                        { "有道", "http://tts.youdao.com/" }
                    };
                    var sw = new Stopwatch();
                    int i  = 0;
                    foreach (var item in listAddresses)
                    {
                        window.ProgressBar.Value = (double)(i * 100) / listAddresses.Count;
                        var list = new List <long>();
                        for (int j = 0; j < 11; j++)
                        {
                            var req          = WebRequest.CreateHttp(item.Value);
                            req.Method       = "HEAD";
                            req.Timeout      = 5000;
                            var frame        = new DispatcherFrame();
                            var getResWorker = new Thread(() =>
                            {
                                try
                                {
                                    using (var res = req.GetResponse()) { }
                                }
                                catch { }
                                frame.Continue = false;
                            });
                            sw.Restart();
                            getResWorker.Start();
                            Dispatcher.PushFrame(frame);
                            sw.Stop();
                            if (j != 0) // ditch first initial connection (stupid.png)
                            {
                                list.Add(sw.ElapsedMilliseconds);
                            }
                            window.ProgressBar.Value += (double)(100 / listAddresses.Count) / 10;
                        }
                        listPing.Add(list);
                        i++;
                    }
                    window.ProgressBar.IsIndeterminate = true;
                    // process data
                    _ = result.Append($"服务器 / 延迟(ms) / 平均值 / 最小 / 最大 / 标准差{Environment.NewLine}");
                    i = 0;
                    foreach (var item in listAddresses)
                    {
                        _ = result.Append($"{item.Key}");
                        for (int j = 0; j < listPing[i].Count; j++)
                        {
                            result.Append($" / {listPing[i][j]}");
                        }
                        _ = result.Append($" / avg {listPing[i].Average()}");
                        _ = result.Append($" / ↓ {listPing[i].Min()}");
                        _ = result.Append($" / ↑ {listPing[i].Max()}");
                        _ = result.Append($" / stdev {Math.Round(Math.Sqrt(listPing[i].Average(x => x * x) - Math.Pow(listPing[i].Average(), 2)), 2)}{Environment.NewLine}");
                        i++;
                    }
                    window.IsOpen = false;
                    AsyncDialog.Open(result.ToString(), "Re: TTSCat");
                    Dispatcher.Invoke(async() =>
                    {
                        TextBox_ExecutionResult.Text = "延迟测试完成";
                        await BrightenAsync();
                    });
                });
                thread.SetApartmentState(ApartmentState.STA);
                thread.Start();
            }
            catch (Exception ex)
            {
                AsyncDialog.Open($"延迟测试错误: {ex}", "Re: TTSCat", MessageBoxIcon.Error);
                TextBox_ExecutionResult.Text = $"延迟测试错误: {ex.Message}";
            }
        }