public TemplatesManager(ISettings settings)
{
this._settings = settings;
this._fileSystemWatcher = new FileSystemWatcher
{
IncludeSubdirectories = true,
Path = _settings.TemplatesPath,
Filter = "*.*",
NotifyFilter = NotifyFilters.LastWrite
};
this._fileSystemObservable =
Observable.FromEventPattern<FileSystemEventHandler, FileSystemEventArgs>(
handler =>
{
_fileSystemWatcher.Changed += handler;
_fileSystemWatcher.Created += handler;
_fileSystemWatcher.Deleted += handler;
},
handler =>
{
_fileSystemWatcher.Changed -= handler;
_fileSystemWatcher.Created -= handler;
_fileSystemWatcher.Deleted -= handler;
})
.Throttle(TimeSpan.FromSeconds(5))
.Select(e => e.EventArgs);
this._fileSystemObservable.Subscribe(e => HostingEnvironment.QueueBackgroundWorkItem(_ => HandleFileSystemChange()));
this._fileSystemWatcher.EnableRaisingEvents = true;
HostingEnvironment.QueueBackgroundWorkItem(_ => HandleFileSystemChange());
}