Ejemplo n.º 1
0
 protected override void protectedPulse(PulseArgs args)
 {
     string dir, backupdir;
     CreateDirectoriesIfNeeded(out dir, out backupdir);
     CheckOpenedStreams(backupdir);
     UpdateOrder(dir);
     if (orderLoad.Count > 0)
     {
         var item = orderLoad.First();
         var a2 = args.Clone();
         var fn = Path.GetFileName(item);
         a2[GetKeyOrDefault(FileNameKey, "FileName")]
             = IsExludeExtensionInName ? Path.GetFileNameWithoutExtension(item) : fn;
         if (IsReadToMemory)
         {
             var buff = new byte[2048];
             int readed;
             var ms = new MemoryStream();
             using (var fs = new FileStream(item, FileMode.Open, FileAccess.Read))
                 while ((readed = fs.Read(buff, 0, buff.Length)) > 0)
                     ms.Write(buff, 0, readed);
             //Thread.Sleep(100);
             Log("Загружен файл '{0}' в память.", item);
             MoveFile(backupdir, item);
             a2[GetKeyOrDefault(ContentKey, "Content")] = ms;
         }
         else
         {
             var fs = new FileStream(item, FileMode.Open, FileAccess.Read, FileShare.None);
             
             AddOpenedStreams(item, fs);
             a2[GetKeyOrDefault(ContentKey, "Content")] = fs;
         }
         base.protectedPulse(a2);
     }
     if (orderLoad.Count == 0 && openedStreams.Count == 0 && IsDeactivateIfEmpty && WaitCounterFile <= 0)
         IsActive = false;
 }