-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathMyFileWatcher.cs
More file actions
78 lines (66 loc) · 2.96 KB
/
MyFileWatcher.cs
File metadata and controls
78 lines (66 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FileWatching
{
public class MyFileWatcher : IMyFileWatcher
{
private string _directoryName = Path.Join(Environment.CurrentDirectory, "files");//change this to whatever you want
private string _fileFilter = "*.*";
FileSystemWatcher _fileSystemWatcher;
ILogger<MyFileWatcher> _logger;
IServiceProvider _serviceProvider;
public MyFileWatcher(ILogger<MyFileWatcher> logger, IServiceProvider serviceProvider)
{
_logger = logger;
if(!Directory.Exists(_directoryName))
Directory.CreateDirectory(_directoryName);
_fileSystemWatcher = new FileSystemWatcher(_directoryName, _fileFilter);
_serviceProvider = serviceProvider;
}
public void Start()
{
_fileSystemWatcher.NotifyFilter = NotifyFilters.Attributes
| NotifyFilters.CreationTime
| NotifyFilters.DirectoryName
| NotifyFilters.FileName
| NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.Security
| NotifyFilters.Size;
_fileSystemWatcher.Changed += _fileSystemWatcher_Changed;
_fileSystemWatcher.Created += _fileSystemWatcher_Created;
_fileSystemWatcher.Deleted += _fileSystemWatcher_Deleted;
_fileSystemWatcher.Renamed += _fileSystemWatcher_Renamed;
_fileSystemWatcher.Error += _fileSystemWatcher_Error;
_fileSystemWatcher.EnableRaisingEvents = true;
_fileSystemWatcher.IncludeSubdirectories = true;
_logger.LogInformation($"File Watching has started for directory {_directoryName}");
}
private void _fileSystemWatcher_Error(object sender, ErrorEventArgs e)
{
_logger.LogInformation($"File error event {e.GetException().Message}");
}
private void _fileSystemWatcher_Renamed(object sender, RenamedEventArgs e)
{
_logger.LogInformation($"File rename event for file {e.FullPath}");
}
private void _fileSystemWatcher_Deleted(object sender, FileSystemEventArgs e)
{
_logger.LogInformation($"File deleted event for file {e.FullPath}");
}
private void _fileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
{
}
private void _fileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
using (var scope = _serviceProvider.CreateScope())
{
var consumerService = scope.ServiceProvider.GetRequiredService<IFileConsumerService>();
Task.Run(() => consumerService.ConsumeFile(e.FullPath));
}
}
}
}