/// <summary> /// Запуск чтения файла. /// </summary> /// <param name="filename">Имя исходного файла.</param> /// <param name="blockSizeDefinder">Тот, кто умеет определять размер очередной порции данных для чтения.</param> public void Run(string filename, IBlockSizeDefinder blockSizeDefinder) { using (var reader = new Reader(filename, blockSizeDefinder)) { var index = 0; byte[] data; while (reader.Read(out data)) { var item = new DataPortion(index, data); _taskQueue.Add(item); index++; } _taskQueue.Completed(); } }
public Reader(string filename, IBlockSizeDefinder blockSizeDefinder) { _fileStream = File.Open(filename, FileMode.Open, FileAccess.Read, FileShare.Read); _blockSizeDefinder = blockSizeDefinder; }