/// <summary>
 /// Create a new VideoStreamSaver from the specified data source
 /// </summary>
 /// <param name="DataSource">The data source we monitor</param>
 public VideoStreamSaver(ISavableZomBData DataSource, string file)
 {
     (this as IZomBDataSaver).Add(DataSource, file);
     pubicQueue = new Queue<MemoryStream>();
     imageQueue = new Queue<MemoryStream>();
     saber = new Thread(aviSaverbg);
     saber.IsBackground = true;
     FPS = 15;
     saber = new Thread(aviSaverbg);
     saber.IsBackground = true;
     saber.Start(file);
 }
 public void Dispose()
 {
     EndSave();
     Thread.Sleep(1);
     try
     {
         saber.Abort();
     }
     catch { }
     Thread.Sleep(1);
     if (srm != null)
     {
         try
         {
             srm.Close();
         }
         catch { }
     }
     saber = null;
     srm = null;
     if (source != null)
     {
         try
         {
             source.DataUpdated -= source_DataUpdated;
         }
         catch { }
         source = null;
     }
 }
 void IZomBDataSaver.Add(ISavableZomBData DataSource, string file)
 {
     if (source == null)
     {
         source = DataSource;
         source.DataUpdated += new EventHandler(source_DataUpdated);
     }
     else
         throw new InvalidOperationException("VideoStreamSaver can only have one data source");
 }