public PrepareSaveToFileFactory(WachtrijRegel voorRegel)
 {
     _voorRegel = voorRegel;
 }
 /// <summary>
 /// Alleen de poll thread start een generatie.
 /// </summary>
 private void PollVoorStart()
 {
     while (_startThread != null)
     {
         Thread.Sleep(100);
         if (_bezigMetRegel == null && (new[] { State.Onbekend, State.Geinitialiseerd }.Contains(_huidigeStatus)))
         {
             var volgendePresentatie = _wachtrij.FirstOrDefault(r => IsRegelCompleet(r));
             if (volgendePresentatie != null)
             {
                 if (!IsRegelCompleet(volgendePresentatie))
                     continue;
                 lock (this)
                 {
                     if (MagUpdaten(volgendePresentatie, _bezigMetRegel) && _wachtrij.Contains(volgendePresentatie))
                     {
                         _bezigMetRegel = volgendePresentatie;
                         Start(volgendePresentatie);
                     }
                 }
             }
         }
     }
 }
 private void Start(WachtrijRegel regel)
 {
     var opslaanAlsBestandsnaam = Path.GetTempFileName();
     Initialiseer(regel.Liturgie.LiturgieRegels, regel.Liturgie, regel.WrappedBuilderData, regel.WrappedBuilderData, opslaanAlsBestandsnaam);
     Start();
 }
 private void Opruimen(WachtrijRegel regel)
 {
     throw new NotImplementedException();
 }
 private void GereedMelding(string opgeslagenAlsBestand = null, string foutmelding = null, int? slidesGemist = null)
 {
     if (opgeslagenAlsBestand != null && foutmelding == null)
         AfrondenGelukt(opgeslagenAlsBestand, slidesGemist ?? 0);
     else {
         if (foutmelding != null)
             FoutmeldingSchrijver.Log(foutmelding);
         AfrondenMislukt(opgeslagenAlsBestand);
     }
     lock (this)
     {
         _verwerkt.Add(_bezigMetRegel);
         _bezigMetRegel.Voortgang.Gereed = true;
         _wachtrij.Remove(_bezigMetRegel);
         _bezigMetRegel = null;
     }
 }
 private static bool MagUpdaten(WachtrijRegel regel, WachtrijRegel bezigMetRegel)
 {
     return
         regel != bezigMetRegel
         && !regel.Voortgang.Gereed;
 }
 private static bool IsRegelCompleet(WachtrijRegel regel)
 {
     return regel != null
         && regel.WrappedBuilderData != null
         && regel.Liturgie != null
         && regel.Bestanden.All(b => b.Ontvangen);
 }
 public WachtrijRegel NieuweWachtrijRegel(ConnectTools.Berichten.BuilderData metBuilderData, ConnectTools.Berichten.Liturgie metLiturgie)
 {
     var regel = new WachtrijRegel()
     {
         Voortgang = new Voortgang(),
         Token = new Token() { ID = Guid.NewGuid() },
         ToegevoegdOp = DateTime.Now,
         Bestanden = new List<BestandStreamToken>()
     };
     regel.Liturgie = new Wachtrij.Liturgie(metLiturgie, (new PrepareSaveToFileFactory(regel)).MaakBestandStreamToken);
     regel.WrappedBuilderData = new Wachtrij.BuilderData(metBuilderData, (new PrepareSaveToFileFactory(regel)).MaakBestandStreamToken);
     lock (this)
     {
         regel.Index = _wachtrij.Count() > 0 ? _wachtrij.Max(w => w.Index) + 1 : 1;
         _wachtrij.Add(regel);
     }
     return regel;
 }