} // constructor public Task StartAsync(EpgDataStore datastore, CancellationToken token) { Token = token; DataStore = datastore; return(Task.Run(Download, token)); } // StartAsync
} // WaitCompletion public void Dispose() { if (_segmentsQueue == null) { return; } _segmentsQueue = null; _enqueuedSegments.Dispose(); _processSegmentsEnded.Dispose(); _datastore = null; } // Dispose
public void Start(EpgDataStore datastore) { if (_segmentsQueue != null) { throw new InvalidOperationException(); } _segmentsQueue = new ConcurrentQueue <byte[]>(); _enqueuedSegments = new AutoResetEvent(false); _processSegmentsEnded = new AutoResetEvent(false); _noMoreSegments = false; _datastore = datastore; var worker = new Thread(ProcessSegments); worker.Start(); } // Start