Exemplo n.º 1
0
        private void Scan(IFolderModel model, DirectoryInfo info, int generation, out List <FileEvent> addUpdateBatch, out List <FileEvent> deleteBatch)
        {
            addUpdateBatch = new List <FileEvent>(100);

            foreach (FileInfo fi in info.EnumerateFiles(_filter)) // throws ArgumentException if filter is bad
            {
                FileEntry foundEntry;

                if (model.TryGetValue(fi.Name, out foundEntry))
                {
                    foundEntry.Generation = generation;

                    if (fi.LastWriteTimeUtc > foundEntry.ModifiedDate)
                    {
                        foundEntry.ModifiedDate = fi.LastWriteTimeUtc;
                        var fileEvent = new FileEvent(FileEventType.Update, foundEntry);
                        addUpdateBatch.Add(fileEvent);
                    }
                }
                else
                {
                    var newEntry = new FileEntry(fi.Name, fi.LastWriteTimeUtc, FileEntry.NotCounted, generation);
                    model.AddFile(newEntry);
                    var fileEvent = new FileEvent(FileEventType.Create, newEntry);
                    addUpdateBatch.Add(fileEvent);
                }
            }

            var filesMissingInThisGeneration = model.FromGenerationPriorTo(generation);

            deleteBatch = new List <FileEvent>(100);

            foreach (FileEntry fileEntry in filesMissingInThisGeneration.ToArray())
            {
                var fileEvent = new FileEvent(FileEventType.Delete, fileEntry);
                model.DeleteFile(fileEntry);
                deleteBatch.Add(fileEvent);
            }
        }
Exemplo n.º 2
0
 public FolderPicker_MV(IFolderModel model)
 {
     FolderModel = model;
     m_SongList = new ObservableCollection<SongFile>();
     CWD = string.Empty;
 }
Exemplo n.º 3
0
 public FolderMonitorPolled(IFolderModel model, string folder, string filter)
 {
 }