private void 浏览运行目录ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     ExplorerAPI.ExplorerFile(JarFileTool.GetFilePath(Project));
     ToastForm.Display("浏览", $"正在打开运行目录,请稍候...", 'i', 5000);
 }
        /// <summary>
        /// 根据工程设置启动服务
        /// </summary>
        /// <returns></returns>
        private void Start()
        {
            StatusUI(WorkStatus.正在启动);
            StartTime = DateTime.Now;

            //端口号是0,玩个蛋
            if (Project.Port == 0)
            {
                ToastForm.Display("启动失败", $"没有为 {Project.Name} 工程配置正儿八经的端口号", 'e', 5000);
                StatusUI(WorkStatus.启动失败);
                return;
            }
            if (!(ListTool.HasElements(Project.Versions) && Project.CurrentVersion != 0 && Project.LastVersion != 0))
            {
                //不存在版本或错误的版本(版本为0),不启动工程
                ToastForm.Display("启动失败", $"没有发现 {Project.Name} 工程的相关文件", 'e', 5000);
                StatusUI(WorkStatus.启动失败);
                return;
            }

            //存在版本,准备启动
            Task.Factory.StartNew(() =>
            {
                string cmd = $"java -jar {Project.Parameter} \"{JarFileTool.GetFilePath(Project)}\"";
                CMDProcessTool.Execute(cmd,
                                       new Action <string>((s) =>
                {
                    if (ConsoleCodeTool.IsLunchSuccess(s))
                    {
                        R.Log.i(s);
                        StatusUI(WorkStatus.启动成功);
                        Invoke(new Action(() =>
                        {
                            ToastForm.Display("启动成功", $"启动 {Project.Name} 工程成功", 'i', 5000);
                        }));
                    }

                    string log = ConsoleCodeTool.GetLogInfo(s);
                    if (!string.IsNullOrWhiteSpace(log))
                    {
                        R.Log.v(log);
                    }

                    //输出到窗口
                    if (ConsoleForm != null && !ConsoleForm.IsDisposed && ConsoleForm.Visible == true)
                    {
                        ConsoleForm.AddToQueue(s);
                    }
                }));

                if (Status == WorkStatus.启动成功 || Status == WorkStatus.端口占用 || Status == WorkStatus.正在关闭)
                {
                    StatusUI(WorkStatus.正在关闭);
                    Stop();
                }
                else
                {
                    StatusUI(WorkStatus.启动失败);
                }
            });
        }