private void CrimsonToE2e(string sourceFileName, string convertedFilename) { int num = 0; using (InternalCrimsonToE2eConvertingParameter internalCrimsonToE2eConvertingParameter = new InternalCrimsonToE2eConvertingParameter()) { internalCrimsonToE2eConvertingParameter.SourceFileName = sourceFileName; internalCrimsonToE2eConvertingParameter.ConvertedFilename = convertedFilename; progressReport.Begin(100); if (!ThreadPool.QueueUserWorkItem(CrimsonToE2eThreadProc, internalCrimsonToE2eConvertingParameter)) { } while (!internalCrimsonToE2eConvertingParameter.IsFinished) { internalCrimsonToE2eConvertingParameter.TraceConvertedEvent.WaitOne(); if (internalCrimsonToE2eConvertingParameter.Percentage != num && internalCrimsonToE2eConvertingParameter.Percentage > num) { for (int i = 0; i < internalCrimsonToE2eConvertingParameter.Percentage - num; i++) { progressReport.Step(); } num = internalCrimsonToE2eConvertingParameter.Percentage; } } progressReport.Complete(); if (internalCrimsonToE2eConvertingParameter.Exception != null) { throw internalCrimsonToE2eConvertingParameter.Exception; } } }
private void CrimsonToE2eThreadProc(object o) { if (o != null && o is InternalCrimsonToE2eConvertingParameter) { InternalCrimsonToE2eConvertingParameter internalCrimsonToE2eConvertingParameter = (InternalCrimsonToE2eConvertingParameter)o; if (!string.IsNullOrEmpty(internalCrimsonToE2eConvertingParameter.SourceFileName) && !string.IsNullOrEmpty(internalCrimsonToE2eConvertingParameter.ConvertedFilename)) { FileStream fileStream = null; FileStream fileStream2 = null; try { fileStream = Utilities.CreateFileStreamHelper(internalCrimsonToE2eConvertingParameter.SourceFileName); if (fileStream.Length > 0) { List <InternalTargetTraceRecord> list = new List <InternalTargetTraceRecord>(); fileStream2 = Utilities.CreateFileStreamHelper(internalCrimsonToE2eConvertingParameter.ConvertedFilename, FileMode.Create, FileAccess.Write, FileShare.Read); XmlTextReader xmlTextReader = new XmlTextReader(fileStream, XmlNodeType.Element, null); XmlWriter xmlWriter = new XmlTextWriter(fileStream2, Encoding.UTF8); xmlTextReader.WhitespaceHandling = WhitespaceHandling.None; xmlTextReader.MoveToContent(); while (InternalReadToXml(xmlTextReader, "Event")) { string text = xmlTextReader.ReadOuterXml(); if (!string.IsNullOrEmpty(text)) { InternalTargetTraceRecord item = InternalConstructTargetTraceRecordXml(text); list.Add(item); } internalCrimsonToE2eConvertingParameter.Percentage = (int)((double)fileStream.Position / (double)fileStream.Length); internalCrimsonToE2eConvertingParameter.TraceConvertedEvent.Set(); } OutputCrimsonToE2EResults(list, xmlWriter); xmlWriter.Flush(); } } catch (LogFileException ex) { InternalCrimsonToE2eConvertingParameter internalCrimsonToE2eConvertingParameter2 = internalCrimsonToE2eConvertingParameter; internalCrimsonToE2eConvertingParameter2.Exception = new FileConverterException(internalCrimsonToE2eConvertingParameter2.SourceFileName, internalCrimsonToE2eConvertingParameter.ConvertedFilename, ex.Message, ex); } catch (ArgumentException e) { InternalCrimsonToE2eConvertingParameter internalCrimsonToE2eConvertingParameter3 = internalCrimsonToE2eConvertingParameter; internalCrimsonToE2eConvertingParameter3.Exception = new FileConverterException(internalCrimsonToE2eConvertingParameter3.SourceFileName, internalCrimsonToE2eConvertingParameter.ConvertedFilename, SR.GetString("MsgCannotWriteToFile") + internalCrimsonToE2eConvertingParameter.ConvertedFilename + SR.GetString("MsgCannotWriteToFileEnd"), e); } catch (XmlException ex2) { errorReport.ReportErrorToUser(new FileConverterException(internalCrimsonToE2eConvertingParameter.SourceFileName, internalCrimsonToE2eConvertingParameter.ConvertedFilename, SR.GetString("MsgErrorOccursOnConvertCrimson") + ex2.Message + SR.GetString("MsgCannotWriteToFileEnd"), ex2)); } finally { Utilities.CloseStreamWithoutException(fileStream, isFlushStream: false); Utilities.CloseStreamWithoutException(fileStream2, isFlushStream: false); internalCrimsonToE2eConvertingParameter.IsFinished = true; internalCrimsonToE2eConvertingParameter.TraceConvertedEvent.Set(); } } } }