Exemple #1
0
        /// <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;
 }