public async Task Start(string baseurl, string guid, Manifest manifest, Media media, CancellationToken token,IProgress<double> progress)
 {
     this.media = media;
     this.guid = guid;
     this.baseurl = baseurl;
     this.bootstrap = media.Info.Info;
     this.manifest = manifest;
     await InitFile();
     await DoNextFragment();
     progress.Report((double)bootstrap.CurrentFragmentWrite * 100D/(double)bootstrap.FragmentCount);
     token.ThrowIfCancellationRequested();
     await ThreadProcessor(token, progress);
     token.ThrowIfCancellationRequested();
 }