public IDownloader OnError(Downloader.ErrorEventDelegate action)
 {
     _onError = e =>
     {
         _threadContext.BeginInvoke(() =>
         {
             action(e);
         });
     };
     return this;
 }
 public IDownloader After(Downloader.AfterDownloadEventDelegate action)
 {
     _onAfterDownload = () =>
     {
         _threadContext.BeginInvoke(() =>
         {
             action();
         });
     };
     return this;
 }