Exemplo n.º 1
0
 private void ReportChangeType(FileListEnum current,
                               CancellationToken token,
                               Action <object, WatcherCallbackArgs> Report,
                               IFileSystemWatcherChangeType changeType)
 {
     if (token.IsCancellationRequested)
     {
         throw new OperationCanceledException();
     }
     foreach (var file in current)
     {
         Trace.TraceInformation($"Reporting changes in directory: {_settings.ScanDirectory}  file: {file} changetype: {changeType}");
         Report(this, new WatcherCallbackArgs(file.Key, changeType));
     }
 }
Exemplo n.º 2
0
 public WatcherCallbackArgs(string fileName, IFileSystemWatcherChangeType changeType)
 {
     FileName   = fileName;
     ChangeType = changeType;
 }
Exemplo n.º 3
0
 void CheckHelper(FilterAndCallbackArgument local, string fileName, ref FileEntry lastEntry, IFileSystemWatcherChangeType ft)
 {
     local.ActionChanges(this, new WatcherCallbackArgs(fileName, ft));
     Assert.True(lastEntry.FileName == fileName && lastEntry.LastChanges == ft);
 }
        void CreateFileHelper(Func <string, FileStream> createFileBefore, Func <string, FileStream> createFileAfter, IFileSystemWatcherChangeType type)
        {
            var scanDirectory = GetAndPrepareTempDirectory();

            FileStream fileBefore = createFileBefore == null ? null : createFileBefore(scanDirectory);


            var m = new ManualScanPhysicalFileSystemWatcher(new ManualScanPhysicalFileSystemWatcherSettings {
                ScanDirectory = scanDirectory, ScanSpeedInSeconds = 0
            });

            ManualResetEvent changeDetected  = new ManualResetEvent(false);
            ManualResetEvent scanInitialized = new ManualResetEvent(false);

            m.Open(new FilterAndCallbackArgument(String.Empty, (object o, WatcherCallbackArgs args) =>
            {
                if (args.ChangeType == type)
                {
                    changeDetected.Set();
                }
            },
                                                 (object o) =>
            {
                scanInitialized.Set();
            }));

            var completedScan = scanInitialized.WaitOne(500);

            Assert.True(completedScan);

            FileStream file      = createFileAfter == null ? null : createFileAfter(scanDirectory);
            var        completed = changeDetected.WaitOne(500);

            Assert.True(completed);
            file?.Dispose();
            fileBefore?.Dispose();

            m.Dispose();

            DeleteAndReturnTempDirectoryName();
        }