public virtual void Run() { CancellationToken = new CancellationToken(); ReadChunksQueue = new ConcurrentQueue <IChunk>(CancellationToken, Options.MaxBuffers, Options.VerboseOutput); ExecutedChunksQueue = new IndexedConcurrentQueue <IChunk>(CancellationToken, Options.MaxBuffers, Options.VerboseOutput); var execThread = new ManagedThread(Execute, OnException); execThread.Start(); var writeThread = new ManagedThread(Write, OnException); writeThread.Start(); try { using (var inputStream = new FileStream(Options.Input, FileMode.Open, FileAccess.Read, FileShare.Read)) { using (var bufferedStream = new BufferedStream(inputStream, Options.ReadBufferSize)) { ReadStream(inputStream); } } } catch (Exception e) { OnException(e); } execThread.Join(); writeThread.Join(); if (ErrorOccured) { throw _exception; } ReadChunksQueue = null; ExecutedChunksQueue = null; }
public DelayedLimitedCollection(CancellationToken cancellationToken, int maxLength) : base(cancellationToken, maxLength) { }