void process_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (e.Data == null) { return; } var data = e.Data.Trim().Replace("\0", ""); if (data.IsNullOrWhiteSpace()) { return; } if (data.EndsWith("%", StringComparison.Ordinal)) { // copy progress data OnCopyProgressChanged?.Invoke(this, new CopyProgressEventArgs(Convert.ToDouble(data.Replace("%", ""), CultureInfo.InvariantCulture))); } else { if (OnFileProcessed != null) { var splitData = data.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); if (splitData.Length == 2) { var file = new ProcessedFileInfo(); file.FileClass = "New Dir"; long size; long.TryParse(splitData[0].Replace("New Dir", "").Trim(), out size); file.Size = size; file.Name = splitData[1]; OnFileProcessed(this, new FileProcessedEventArgs(file)); } else if (splitData.Length == 3) { var file = new ProcessedFileInfo(); file.FileClass = splitData[0].Trim(); long size = 0; long.TryParse(splitData[1].Trim(), out size); file.Size = size; file.Name = splitData[2]; OnFileProcessed(this, new FileProcessedEventArgs(file)); } else { if (OnError != null && Regex.IsMatch(data, @" ERROR \d{1,3} \(0x\d{8}\) ")) { var errorCode = ApplicationConstants.ErrorCodes.FirstOrDefault(x => data.Contains(x.Key)); if (errorCode.Key != null) { OnError(this, new ErrorEventArgs(string.Format("{0}{1}{2}", data, Environment.NewLine, errorCode.Value))); } else { OnError(this, new ErrorEventArgs(data)); } } else { if (!data.StartsWith("----------")) { // Do not log errors that have already been logged var errorCode = ApplicationConstants.ErrorCodes.FirstOrDefault(x => data == x.Value); if (errorCode.Key == null) { var file = new ProcessedFileInfo(); file.FileClass = "System Message"; file.Size = 0; file.Name = data; OnFileProcessed(this, new FileProcessedEventArgs(file)); } } } } } } }
public FileProcessedEventArgs(ProcessedFileInfo file) { ProcessedFile = file; }
void process_OutputDataReceived(object sender, DataReceivedEventArgs e) { if (e.Data == null) return; var data = e.Data.Trim().Replace("\0", ""); if (string.IsNullOrWhiteSpace(data)) return; if (data.EndsWith("%", StringComparison.Ordinal)) { // copy progress data if (OnCopyProgressChanged != null) OnCopyProgressChanged(this, new CopyProgressEventArgs(Convert.ToDouble(data.Replace("%", ""), CultureInfo.InvariantCulture))); } else { if (OnFileProcessed != null) { var splitData = data.Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries); if (splitData.Length == 2) { var file = new ProcessedFileInfo(); file.FileClass = "New Dir"; long size; long.TryParse(splitData[0].Replace("New Dir", "").Trim(), out size); file.Size = size; file.Name = splitData[1]; OnFileProcessed(this, new FileProcessedEventArgs(file)); } else if (splitData.Length == 3) { var file = new ProcessedFileInfo(); file.FileClass = splitData[0].Trim(); long size = 0; long.TryParse(splitData[1].Trim(), out size); file.Size = size; file.Name = splitData[2]; OnFileProcessed(this, new FileProcessedEventArgs(file)); } else { if (OnError != null && Regex.IsMatch(data, @" ERROR \d{1,3} \(0x\d{8}\) ")) { var errorCode = ApplicationConstants.ErrorCodes.FirstOrDefault(x => data.Contains(x.Key)); if(errorCode.Key != null) { OnError(this, new ErrorEventArgs(string.Format("{0}{1}{2}", data, Environment.NewLine, errorCode.Value))); } else { OnError(this, new ErrorEventArgs(data)); } } else { if (!data.StartsWith("----------")) { // Do not log errors that have already been logged var errorCode = ApplicationConstants.ErrorCodes.FirstOrDefault(x => data == x.Value); if (errorCode.Key == null) { var file = new ProcessedFileInfo(); file.FileClass = "System Message"; file.Size = 0; file.Name = data; OnFileProcessed(this, new FileProcessedEventArgs(file)); } } } } } } }