/// <summary> /// 开始执行工作流时触发 /// </summary> /// <param name="obj">对象</param> private void BeginRun(RunManager obj) { //流程运行开始…… SharedObject.Instance.Output(SharedObject.enOutputType.Trace, ResxIF.GetString("TheProcessStarted")); //不应该更新状态为START,不然和用户自己设置的标识冲突了 //Task.Run(async()=> { // await ControlServerService.UpdateRunStatus(obj.m_packageItem.Name, obj.m_packageItem.Version, ControlServerService.enProcessStatus.Start); //}); if (FFmpegService != null) { FFmpegService.StopCaptureScreen(); FFmpegService = null; } if (ViewModelLocator.Instance.UserPreferences.IsEnableScreenRecorder) { //屏幕录像开始…… SharedObject.Instance.Output(SharedObject.enOutputType.Trace, ResxIF.GetString("ScreenRecordingStarted")); var screenRecorderFilePath = App.LocalRPAStudioDir + @"\ScreenRecorder\" + obj.m_packageItem.Name + @"(" + DateTime.Now.ToString(ResxIF.GetString("YYYYMMDD")) + ").mp4"; FFmpegService = new FFmpegService(screenRecorderFilePath, ViewModelLocator.Instance.UserPreferences.FPS, ViewModelLocator.Instance.UserPreferences.Quality);//默认存到%localappdata%下RPASTUDIO下的ScreenRecorder目录下 Task.Run(() => { FFmpegService.StartCaptureScreen(); }); //等待屏幕录像ffmpeg进程启动 int wait_count = 0; while (!FFmpegService.IsRunning()) { wait_count++; Thread.Sleep(300); if (wait_count == 10) { break; } } } Common.RunInUI(() => { m_view.Hide(); obj.m_packageItem.IsRunning = true; IsWorkflowRunning = true; WorkflowRunningName = obj.m_packageItem.Name; WorkflowRunningToolTip = obj.m_packageItem.ToolTip; WorkflowRunningStatus = ResxIF.GetString("RunningText"); //正在运行 }); }
private void BeginRun(RunManager obj) { SharedObject.Instance.Output(SharedObject.enOutputType.Trace, "流程运行开始……", null); if (this.FFmpegService != null) { this.FFmpegService.StopCaptureScreen(); this.FFmpegService = null; } if (ViewModelLocator.Instance.UserPreferences.IsEnableScreenRecorder) { SharedObject.Instance.Output(SharedObject.enOutputType.Trace, "屏幕录像开始……", null); var screenCaptureSavePath = Path.Combine( App.LocalRPAStudioDir, "ScreenRecorder", obj.m_packageItem.Name, "(", DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒"), ").mp4" ); FFmpegService = new FFmpegService(screenCaptureSavePath, ViewModelLocator.Instance.UserPreferences.FPS, ViewModelLocator.Instance.UserPreferences.Quality); Task.Run(FFmpegService.StartCaptureScreen); // 三秒 int num = 0; while (!FFmpegService.IsRunning()) { num++; Thread.Sleep(300); if (num == 10) { break; } } } Common.RunInUI(() => { ViewModelLocator.Instance.Main.m_view.Hide(); obj.m_packageItem.IsRunning = true; IsWorkflowRunning = true; WorkflowRunningName = obj.m_packageItem.Name; WorkflowRunningToolTip = obj.m_packageItem.ToolTip; WorkflowRunningStatus = "正在运行"; }); }