protected void ReadPixelData(IEXRReader reader) { var linesPerBlock = EXRFile.GetScanLinesPerBlock(Header.Compression); var sortedChannels = (from c in Header.Channels orderby c.Name select c).ToList(); //var actions = (from offset in Offsets select (Action)(() => { //})); //Parallel.Invoke(actions.ToArray()); foreach (var offset in Offsets) { ReadPixelBlock(reader, offset, linesPerBlock, sortedChannels); } }
private void ReadPixelDataParallel(ParallelReaderCreationDelegate createReader) { var linesPerBlock = EXRFile.GetScanLinesPerBlock(Header.Compression); var sortedChannels = (from c in Header.Channels orderby c.Name select c).ToList(); var actions = (from offset in Offsets select(Action)(() => { var reader = createReader(); ReadPixelBlock(reader, offset, linesPerBlock, sortedChannels); reader.Dispose(); })); Parallel.Invoke(actions.ToArray()); }