Catel.LogAnalyzer.FileWatcherService.ObserveFolderChanges C# (CSharp) Method

ObserveFolderChanges() public method

Observes the folder changes.
public ObserveFolderChanges ( string path, string filter, System.TimeSpan throttle ) : IObservable
path string The path.
filter string The filter.
throttle System.TimeSpan The throttle.
return IObservable
        public IObservable<FileSystemEventArgs> ObserveFolderChanges(string path, string filter, TimeSpan throttle)
        {
            Argument.IsNotNullOrWhitespace(() => path);
            Argument.IsNotNullOrWhitespace(() => filter);
            Argument.IsNotNull(() => throttle);

            return Observable.Create<FileSystemEventArgs>(
                observer =>
                    {
                        var fileSystemWatcher = new FileSystemWatcher(path, filter) {EnableRaisingEvents = true};

                        return Observable.FromEventPattern<FileSystemEventArgs>(fileSystemWatcher, "Changed")
                                         .Select(ev => ev.EventArgs)
                                         .Throttle(throttle)
                                         .Finally(fileSystemWatcher.Dispose)
                                         .Subscribe(observer);
                    }
                );
        }
        #endregion
FileWatcherService