/// <summary> /// コントローラからのイベント受け取り /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected virtual void ConvertStateChanged(object sender, ConvertStateChangedEventArgs e) { // イベントを発行 e.AllProgress = (int)(((double)currentFileIndex / SourceFileList.Count) * 100); e.AllStatus = $"{currentFileIndex}/{SourceFileList.Count}"; e.SourceFilePath = SourceFileList[currentFileIndex]; OnConvertStateChanged(e); }
/// <summary> /// イベントを発生させる /// </summary> /// <param name="allProgress"></param> /// <param name="fileProgress"></param> /// <param name="allStatus"></param> /// <param name="fileStatus"></param> protected virtual void OnConvertStateChanged(int allProgress, int fileProgress, string allStatus, string fileStatus) { var e = new ConvertStateChangedEventArgs { AllProgress = allProgress, AllStatus = allStatus, FileProgress = fileProgress, FileStatus = fileStatus }; OnConvertStateChanged(e); }
/// <summary> /// プロセスからの標準出力・エラー出力を受け取る /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected virtual void OutputDataReceived(object sender, DataReceivedEventArgs e) { // データがnullの場合はプロセスが終了した if (e == null) { outputEndEvent.SetResult(true); return; } // データが空の場合は無視 if (string.IsNullOrWhiteSpace(e.Data)) { return; } ConvertStateChangedEventArgs args = new ConvertStateChangedEventArgs { LogData = e.Data }; // パーセンテージ+残り時間 if (Constant.RegexLogOutputProgressAndRemain.IsMatch(e.Data)) { GroupCollection groups = Constant.RegexLogOutputProgressAndRemain.Match(e.Data).Groups; args.FileProgress = decimal.ToInt32(decimal.Round(decimal.Parse(groups[1].Value))); args.FileStatus = groups[2].Value; } // パーセンテージのみ if (Constant.RegexLogOutputProgress.IsMatch(e.Data)) { GroupCollection groups = Constant.RegexLogOutputProgress.Match(e.Data).Groups; args.FileProgress = decimal.ToInt32(decimal.Round(decimal.Parse(groups[1].Value))); } // イベントを発行 OnOutputDataReceived(args); }
/// <summary> /// イベントを発生させる /// </summary> /// <param name="e"></param> protected virtual void OnConvertStateChanged(ConvertStateChangedEventArgs e) { ConvertStateChangedEvent?.Invoke(this, e); }
/// <summary> /// 変換状態変更イベントを発生させる /// </summary> /// <param name="e"></param> protected virtual void OnOutputDataReceived(ConvertStateChangedEventArgs e) { ConvertStateChangedEvent?.Invoke(this, e); }