Beispiel #1
0
        internal AudioScan(DirectoryInfo directory, SearchOption searchoption,
                           bool parseAdd, bool parseUpdate, bool removeDeadFiles,
                           string[] extensions, IEnumerable<RawTrack> existingFiles, IEnumerable<string> ignoredFiles,
                           ScanFileEventHandler parsed,
                           ScanCompletedEventHandler done)
        {
            var thread = new Thread(Run);

            _directory = directory;
            _searchoption = searchoption;

            _parseAdd = parseAdd;
            _parseUpdate = parseUpdate;
            _removeDeadFiles = removeDeadFiles;

            _parser = new MediaParser();

            _extensions = extensions;
            _existingFiles = existingFiles.ToDictionary(rt => rt.File);

            _ignoredFiles = (from s in ignoredFiles select new FileInfo(s)).ToArray();

            Parsed = parsed;
            Done = done;

            _state = ScannerState.NotRunning;

            _added = _updated = _skipped = _error = _removed = _total = 0;

            thread.Start();
        }
        internal AudioScan(DirectoryInfo directory, SearchOption searchoption,
                           bool parseAdd, bool parseUpdate, bool removeDeadFiles,
                           string[] extensions, IEnumerable <RawTrack> existingFiles, IEnumerable <string> ignoredFiles,
                           ScanFileEventHandler parsed,
                           ScanCompletedEventHandler done)
        {
            var thread = new Thread(Run);

            _directory    = directory;
            _searchoption = searchoption;

            _parseAdd        = parseAdd;
            _parseUpdate     = parseUpdate;
            _removeDeadFiles = removeDeadFiles;

            _parser = new MediaParser();

            _extensions    = extensions;
            _existingFiles = existingFiles.ToDictionary(rt => rt.File);

            _ignoredFiles = (from s in ignoredFiles select new FileInfo(s)).ToArray();

            Parsed = parsed;
            Done   = done;

            _state = ScannerState.NotRunning;

            _added = _updated = _skipped = _error = _removed = _total = 0;

            thread.Start();
        }
Beispiel #3
0
        public AudioScan RunScannerAsync(string[] ignoreFiles)
        {
            if (!_directory.Exists)
            {
                throw new ArgumentException("Directory must exist.", "directory");
            }

            if (IsRunning)
            {
                throw new InvalidOperationException("RunScannerAsync is already running.");
            }

            var ig = new string[ignoreFiles.Length];

            ignoreFiles.CopyTo(ig, 0);

            ScanFileEventHandler parsed = FileParsed;

            parsed += AudioScannerFileParsed;

            return(new AudioScan(_directory, _searchoption, _parseAdd, _parseUpdate, _removeDeadFiles,
                                 _extensionList.ToArray(), MediaLibrary.Tracks.Select(x => x.Model).ToArray(), ig,
                                 parsed, ScanDone));
        }