/// <summary> /// return line with Biggest FileSize line by line. /// Time consumption method; /// </summary> public void BeginReadLine() { //1 read 1 line in each file foreach (var tmpReader in fileReaderArr) { tmpReader.ReadOneLine(); } while (fileReaderArr.Any(r => r.CurLine != null)) { //2 find line with biggest file size var fileReaderWithBiggestFileSize = fileReaderArr.Select(r => r) .OrderByDescending(r => r.CurLineFileSize) .FirstOrDefault(); string lineWithBiggestFileSize = fileReaderWithBiggestFileSize.CurLine; var lineReadedE = new LineReadedEventArgs(); lineReadedE.CurLineStr = lineWithBiggestFileSize; LineReaded(this, lineReadedE); processedRowNumber++; //3 fileReaderWithBiggestFileSize read 1 more line; fileReaderWithBiggestFileSize.ReadOneLine(); } FilesReadCompleted(this, new EventArgs()); }
private static void FilesReader_LineReaded(object sender, LineReadedEventArgs e) { var filesReader = (FilesReader)sender; Console.WriteLine(filesReader.ProcessedRowNumber); fw.AppendLine(e.CurLineStr); }