public async Task <string[]> GetAllLines() { var result = new List <string>(); await Task.Run(() => { var info = Info; if (info != null) { var list = new ConcurrentBag <DividedFile>(); var fileNUM = info.FileNames.Count; Parallel.For( 0, fileNUM, i => { var dividedFile = new DividedFile(i); var filePath = Path.Combine(InfoFileDirectory, info.FileNames[i]); dividedFile.LoadAllLines(filePath); list.Add(dividedFile); } ); if (list.Count > 0) { var array = list.OrderBy(e => e.Id).ToArray(); foreach (var file in array) { foreach (var line in file.Lines) { result.Add(line); } } } } }); return(result.ToArray()); }