public Downloader(Func<IChapterRecord, IDictionary<int, string>> pagesResolver, Func<string, string> imageFinder)
{
if (pagesResolver == null)
throw new ArgumentNullException("pagesResolver");
if (imageFinder == null)
throw new ArgumentNullException("imageFinder");
_pageResolver = pagesResolver;
_imageFinder = imageFinder;
_backgroundWorker = new BackgroundWorker();
_backgroundWorker.WorkerReportsProgress = true;
_backgroundWorker.WorkerSupportsCancellation = true;
_backgroundWorker.DoWork += _backgroundWorker_DoWork;
_backgroundWorker.RunWorkerCompleted += _backgroundWorker_RunWorkerCompleted;
_backgroundWorker.ProgressChanged += _backgroundWorker_ProgressChanged;
}