Example #1
0
        private void ProcessFileWatcherEvent(FileSystemEventArgs e)
        {
            FileWatcherEventArgs args = new FileWatcherEventArgs();

            args.FileName  = e.Name;
            args.EventName = e.ChangeType.ToString();
            args.EventTime = DateTime.Now;
            OnFileProcess?.Invoke(this, args);
            //
            string time_string =
                String.Format("{0:D4}-{1:D2}-{2:D2} {3:D2}:{4:D2}:{5:D2}:{6:D4}",
                              args.EventTime.Year, args.EventTime.Month, args.EventTime.Day, args.EventTime.Hour, args.EventTime.Minute, args.EventTime.Second, args.EventTime.Millisecond);
            string s = String.Format("{0,-24} - {1,-10} - {2,-255}", time_string, args.EventName, args.FileName);

            _logger.WriteLine(s);
            //
            string destFileName   = Path.Combine(_watcherParams.OutputDir, e.Name);
            string sourceFileName = e.FullPath;

            //
            if (!File.Exists(destFileName) && e.ChangeType == WatcherChangeTypes.Created)
            {
                _queueTaskWorker.AddToQueue(args);
            }
            else if (File.Exists(destFileName) && e.ChangeType == WatcherChangeTypes.Deleted)
            {
                File.Delete(destFileName);
            }
            else if (File.Exists(destFileName) && e.ChangeType == WatcherChangeTypes.Changed)
            {
                _queueTaskWorker.AddToQueue(args);
            }
        }
        /// <summary>
        /// Multithreading
        /// </summary>
        /// <param name="handler"></param>
        /// <param name="e"></param>
        void EventHandler(FileWatcherEvent handler, EventArgs e)
        {
            var fileWatcherEventArgs = new FileWatcherEventArgs(e);

            handler?.Invoke(fileWatcherEventArgs);
            AllChanged?.Invoke(fileWatcherEventArgs);
        }
Example #3
0
        public void ShouldWatchRenamedFile()
        {
            // Arrange
            FileWatcherEventArgs args        = null;
            const string         fileName    = "FileWatcherRename.test";
            const string         fileName2   = "FileWatcherRename2.test";
            FileWatcher          fileWatcher = new FileWatcher(new FileInfo(fileName));

            fileWatcher.OnChange += (s, a) => args = a;
            using (StreamWriter writer = File.CreateText(fileName))
            {
                writer.WriteLine();
                writer.Flush();
            }

            // Act
            fileWatcher.Start();
            File.Move(fileName, fileName2);
            Thread.Sleep(1200);
            FileWatcherEventArgs previousArgs = args;

            fileWatcher.ChangeFileToWatch(new FileInfo(fileName2));
            fileWatcher.Start();
            File.Delete(fileName2);
            Thread.Sleep(1200);
            fileWatcher.Dispose();

            // Assert
            Assert.IsNotNull(previousArgs);
            Assert.IsTrue(previousArgs.IsFileNameChanged);
            Assert.IsNotNull(previousArgs.NewFilePath);
            Assert.AreEqual(fileName2, new FileInfo(previousArgs.NewFilePath).Name);
            Assert.IsNotNull(args);
            Assert.IsTrue(args.IsFileDeleted);
        }
Example #4
0
        public void ShouldWatchChangedFile()
        {
            // Arrange
            FileWatcherEventArgs args        = null;
            const string         fileName    = "FileWatcherChange.test";
            FileWatcher          fileWatcher = new FileWatcher(new FileInfo(fileName));

            fileWatcher.OnChange += (s, a) => args = a;
            using (StreamWriter writer = File.CreateText(fileName))
            {
                writer.WriteLine();
                writer.Flush();
            }

            // Act
            fileWatcher.Start();
            using (StreamWriter writer = new StreamWriter(fileName, true))
            {
                writer.WriteLine();
                writer.Flush();
            }
            Thread.Sleep(1200);
            fileWatcher.Dispose();
            File.Delete(fileName);

            // Assert
            Assert.IsNotNull(args);
            Assert.IsTrue(args.IsFileChanged);
        }
        public void RenameFileTest()
        {
            string fileName = Path.Combine(_testDirectory, "Test.txt");
            File.WriteAllText(fileName, "Test");

            var settings = new FileWatchSetting();
            settings.Directory = _testDirectory;
            settings.DelayInMS = 100;

            FileWatcherEventArgs args = null;
            int events = 0;
            using (var watch = new FileWatch(settings))
            {
                watch.StartWatching();
                watch.Changed += (o, a) =>
                {
                    args = a;
                    events++;
                };
                string newFileName = Path.Combine(_testDirectory, "TestNew.txt");
                File.Move(fileName, newFileName);
                Thread.Sleep(50);
                Assert.AreEqual(0, events);
                Thread.Sleep(80);
                Assert.AreEqual(1, events);
                Assert.AreEqual(1, args.NewFiles.Length);
                Assert.AreEqual(newFileName, args.NewFiles[0]);
                Assert.AreEqual(0, args.ChangedFiles.Length);
                Assert.AreEqual(1, args.DeletedFiles.Length);
                Assert.AreEqual(fileName, args.DeletedFiles[0]);

                Thread.Sleep(200);
                Assert.AreEqual(1, events);
            };
        }
        public void NewAndChangeDeleteFileTest()
        {
            var settings = new FileWatchSetting();
            settings.Directory = _testDirectory;
            settings.DelayInMS = 100;

            FileWatcherEventArgs args = null;
            int events = 0;
            using (var watch = new FileWatch(settings))
            {
                watch.StartWatching();
                watch.Changed += (o, a) =>
                {
                    args = a;
                    events++;
                };
                string fileName = Path.Combine(_testDirectory, "Test.txt");
                File.WriteAllText(fileName, "Test");
                Thread.Sleep(20);
                File.AppendAllText(fileName, "Test");
                Thread.Sleep(20);
                File.Delete(fileName);
                Thread.Sleep(20);
                Assert.AreEqual(0, events);
                Thread.Sleep(100);
                Assert.AreEqual(0, events);
            };
        }
Example #7
0
 public void AddToQueue(FileWatcherEventArgs fileWatcherEventArgs)
 {
     lock (_lockObject)
     {
         _uniqueQueue.Enqueue(fileWatcherEventArgs);
     }
 }
Example #8
0
        private static void ProcessQueue()
        {
            while (_stopQueue == false)
            {
                int count = 0;
                FileWatcherEventArgs fileWatcherEventArgs = null;
                lock (_lockObject)
                {
                    count = _uniqueQueue.Count;
                }

                while (_stopQueue == false && count > 0)
                {
                    fileWatcherEventArgs = _uniqueQueue.Peek();
                    string sourceFileName = Path.Combine(_fileWatcherParams.InputDir, Path.GetFileName(fileWatcherEventArgs.FileName));
                    string destFileName   = Path.Combine(_fileWatcherParams.OutputDir, Path.GetFileName(fileWatcherEventArgs.FileName));

                    Task task = CopyFileEx(sourceFileName, destFileName);
                    task.Wait();

                    lock (_lockObject)
                    {
                        _uniqueQueue.Dequeue();
                        count = _uniqueQueue.Count;
                        Debug.WriteLine($"{Path.GetFileName(fileWatcherEventArgs.FileName)}, Queue items: {count}");
                    }
                }
                Thread.Sleep(100);
            }
        }
        public void MultipleChangesWhileDelayTimeTest()
        {
            string fileName1 = Path.Combine(_testDirectory, "Test1.txt");
            File.WriteAllText(fileName1, "Test");
            string fileName2 = Path.Combine(_testDirectory, "Test2.txt");
            File.WriteAllText(fileName2, "Test");

            var settings = new FileWatchSetting();
            settings.Directory = _testDirectory;
            settings.DelayInMS = 100;

            FileWatcherEventArgs args = null;
            int events = 0;
            using (var watch = new FileWatch(settings))
            {
                watch.StartWatching();
                watch.Changed += (o, a) =>
                {
                    args = a;
                    events++;
                };
                string fileName3 = Path.Combine(_testDirectory, "Test3.txt");
                File.WriteAllText(fileName3, "Test");
                string fileName4 = Path.Combine(_testDirectory, "Test4.txt");
                File.WriteAllText(fileName4, "Test");
                Thread.Sleep(50);
                Assert.AreEqual(0, events);
                Thread.Sleep(80);
                Assert.AreEqual(1, events);
                Assert.AreEqual(2, args.NewFiles.Length);
                Assert.AreEqual(fileName3, args.NewFiles[0]);
                Assert.AreEqual(fileName4, args.NewFiles[1]);
                Assert.AreEqual(0, args.ChangedFiles.Length);
                Assert.AreEqual(0, args.DeletedFiles.Length);
                Thread.Sleep(200);
                Assert.AreEqual(1, events);
                File.Delete(fileName1);
                File.Delete(fileName2);
                File.AppendAllText(fileName3, "Test");
                File.AppendAllText(fileName4, "Test");
                string fileName5 = Path.Combine(_testDirectory, "Test5.txt");
                File.WriteAllText(fileName5, "Test");
                string fileName6 = Path.Combine(_testDirectory, "Test6.txt");
                File.WriteAllText(fileName6, "Test");
                Thread.Sleep(50);
                Assert.AreEqual(1, events);
                Thread.Sleep(80);
                Assert.AreEqual(2, events);
                Assert.AreEqual(fileName5, args.NewFiles[0]);
                Assert.AreEqual(fileName6, args.NewFiles[1]);
                Assert.AreEqual(fileName3, args.ChangedFiles[0]);
                Assert.AreEqual(fileName4, args.ChangedFiles[1]);
                Assert.AreEqual(fileName1, args.DeletedFiles[0]);
                Assert.AreEqual(fileName2, args.DeletedFiles[1]);

                Thread.Sleep(200);
                Assert.AreEqual(2, events);
            };
        }
Example #10
0
 private void Watcher_FileChanged(object sender, FileWatcherEventArgs e)
 {
     this.logFileContent.InvokeIfRequired(() =>
     {
         this.logFileContent.AppendText(e.AppendedContent);
         this.logFileContent.ScrollToCaret();
     });
 }
 private void _fileWatcher_FileChanged(object sender, FileWatcherEventArgs e)
 {
     if (!New <LicensePolicy>().Capabilities.Has(LicenseCapability.SecureFolders))
     {
         return;
     }
     OnChanged(e);
 }
Example #12
0
        protected virtual void OnChanged(FileWatcherEventArgs eventArgs)
        {
            EventHandler <FileWatcherEventArgs> fileChanged = FileChanged;

            if (fileChanged != null)
            {
                fileChanged(null, eventArgs);
            }
        }
Example #13
0
 private void FileSystemChanged(FileWatcherEventArgs e)
 {
     if (Resolve.Log.IsInfoEnabled)
     {
         Resolve.Log.LogInfo("Watcher says {0} changed.".InvariantFormat(e.FullNames.Aggregate(String.Empty, (acc, fullName) => acc + "'" + fullName + "' ")));
     }
     lock (_notifications)
     {
         _notifications.Add(e);
     }
     _delayedAction.StartIdleTimer();
 }
Example #14
0
        private async void HandleWorkFolderFileChangedEvent(object sender, FileWatcherEventArgs e)
        {
            foreach (string fullName in e.FullNames)
            {
                if (fullName == Resolve.FileSystemState.PathInfo.FullName)
                {
                    continue;
                }

                await Resolve.SessionNotify.NotifyAsync(new SessionNotification(SessionNotificationType.WorkFolderChange, fullName));
            }
        }
Example #15
0
 private void SendNotification()
 {
     for (int i = 1; i <= 20; i++)
     {
         FileWatcherEventArgs args = new FileWatcherEventArgs();
         args.FileName  = i.ToString().PadLeft(4, '0') + ".xml";
         args.EventName = (i % 2 == 0) ? "Changed" : "Created";
         args.EventTime = DateTime.Now;
         //
         OnFileProcess?.Invoke(this, args);
     }
 }
Example #16
0
        private async void watchedFolder_Changed(object sender, FileWatcherEventArgs e)
        {
            WatchedFolder watchedFolder = (WatchedFolder)sender;

            foreach (string fullName in e.FullNames)
            {
                IDataItem dataItem = New <IDataItem>(fullName);
                await HandleWatchedFolderChangesAsync(watchedFolder, dataItem);

                await Resolve.SessionNotify.NotifyAsync(new SessionNotification(SessionNotificationType.WatchedFolderChange, dataItem.FullName));
            }
        }
 /// <summary>
 /// Handles system changed event.
 /// </summary>
 /// <param name="sender">The source of the event.</param>
 /// <param name="e">Event data.</param>
 /// <exception cref="ArgumentNullException">e is null.</exception>
 protected virtual void OnSystemChanged(object sender,
                                        FileWatcherEventArgs e)
 {
     if (e == null)
     {
         throw new ArgumentNullException("e",
                                         Resources.ArgumentNullException);
     }
     if (e.ConfigurationKeyValuePair.Value.LogFileSystemChange)
     {
         AddLogMessage(_formatter.Format(e));
     }
 }
Example #18
0
        /// <summary>
        /// Handles system changed event.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">Event data.</param>
        /// <exception cref="ArgumentNullException">e is null.</exception>
        protected override void OnSystemChanged(object sender,
                                                FileWatcherEventArgs e)
        {
            if (e == null)
            {
                throw new ArgumentNullException("e",
                                                Resources.ArgumentNullException);
            }

            base.OnSystemChanged(sender, e);
            _fileWatcherSortedDictionary[e.ConfigurationKeyValuePair.Key].LastEventType =
                e.ChangeType;
            _fileWatcherSortedDictionary[e.ConfigurationKeyValuePair.Key].LastEventTime =
                e.DateTime.ToLocalTime().ToString(CultureInfo.CurrentCulture);
            IncreaseEventCount(e.ConfigurationKeyValuePair.Key);
            UpdateList(false);
        }
Example #19
0
        /// <summary>
        /// Handles system changed event.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">Event data.</param>
        /// <exception cref="ArgumentNullException">e is null.</exception>
        protected override void OnSystemChanged(object sender,
                                                FileWatcherEventArgs e)
        {
            if (e == null)
            {
                throw new ArgumentNullException("e",
                                                Resources.ArgumentNullException);
            }

            base.OnSystemChanged(sender, e);
            if (e.ConfigurationKeyValuePair.Value.DisplayFileSystemChange)
            {
                _consoleView.EchoLine(String.Format(CultureInfo.CurrentCulture,
                                                    Resources.MessageFileChanged,
                                                    @e.ChangeType,
                                                    @e.FileName));
            }
        }
Example #20
0
        /// <summary>
        /// Formats message.
        /// </summary>
        /// <param name="fileWatcherEventArgs">Message.</param>
        /// <returns>Formatted message.</returns>
        /// <exception cref="ArgumentNullException">fileWatcherEventArgs is null.</exception>
        public string Format(FileWatcherEventArgs fileWatcherEventArgs)
        {
            if (fileWatcherEventArgs == null)
            {
                throw new ArgumentNullException("fileWatcherEventArgs",
                                                Resources.ArgumentNullException);
            }

            if (String.Compare(fileWatcherEventArgs.ChangeType, Resources.ChangeTypeSystemGenerated, StringComparison.Ordinal) == 0)
            {
                return(String.Format(CultureInfo.CurrentCulture,
                                     @Resources.MessageFileSystemChange,
                                     @DateTime.Now,
                                     @Resources.MessageTypeInfo,
                                     @Resources.MessageSystemGenerated,
                                     @fileWatcherEventArgs.FullPath));
            }
            return(String.Format(CultureInfo.CurrentCulture,
                                 @Resources.MessageFileSystemChange,
                                 @DateTime.Now,
                                 @Resources.MessageTypeInfo,
                                 @fileWatcherEventArgs.ChangeType.ToLower(CultureInfo.CurrentCulture),
                                 @fileWatcherEventArgs.FullPath));
        }
Example #21
0
 private void HandleWorkFolderFileChangedEvent(object sender, FileWatcherEventArgs e)
 {
     NotifyWorkFolderStateChanged();
 }
 protected void OnADUserFileChanged(object sender, FileWatcherEventArgs e)
 {
     InvokeTaskForRun();
 }
Example #23
0
 protected void OnObjectFileChanged(object sender, FileWatcherEventArgs e)
 {
     CheckFiledChanged(ref IsObjectFileChanged);
 }
Example #24
0
 protected void OnReferenceFileChanged(object sender, FileWatcherEventArgs e)
 {
     CheckFiledChanged(ref IsReferenceFileChanged);
 }
 protected virtual void OnChanged(FileWatcherEventArgs e)
 {
     Changed?.Invoke(this, e);
 }
Example #26
0
 private void _fileWatcher_OnFileProcess(object sender, FileWatcherEventArgs e)
 {
     _syncContext.Post(o => AddInfoLine(e.FileName, e.EventName, e.EventTime), null);
 }
 void HandleExcelChange(object sender, FileWatcherEventArgs args)
 {
     Console.WriteLine("Excel change called");
 }
Example #28
0
 /// <summary>
 /// 文件发生变动事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void WatcherChangedEvent(object sender, FileWatcherEventArgs e)
 {
     AddToBackupFiles(e.FullPath);
 }
 private async void HandleActiveFileFolderChangedEvent(object sender, FileWatcherEventArgs e)
 {
     await Resolve.SessionNotify.NotifyAsync(new SessionNotification(SessionNotificationType.UpdateActiveFiles, e.FullNames));
 }
 public void StartTextImport([FromBody] FileWatcherEventArgs args)
 {
     _logger.LogInformation("Text import triggered");
 }