-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileWatcher.cs
More file actions
98 lines (73 loc) · 2.51 KB
/
FileWatcher.cs
File metadata and controls
98 lines (73 loc) · 2.51 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading.Tasks;
namespace Howmet.Utilities.FileSystem
{
/// <summary>
/// A class that wraps FileSystemWatcher that is meant to be a single entity in a
/// collection of FileWatchers used to monitor directory structures.
/// </summary>
public class FileWatcher : FileSystemEventHandlers
{
#region Constants
#endregion
#region Declarations
private string Path = "";
private FileSystemWatcher Watcher = new FileSystemWatcher();
private FileSystemEventHandlers Events = new FileSystemEventHandlers();
#endregion
#region Constructors
public FileWatcher(string path)
{
Path = System.IO.Path.GetDirectoryName(path);
Watcher.Path = Path;
SendMessage(string.Format("Watching: {0}", Path));
Watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.CreationTime | NotifyFilters.FileName | NotifyFilters.DirectoryName;
Watcher.IncludeSubdirectories = true;
// Watch all files.
Watcher.Filter = "*.*";
Watcher.Created += Watcher_FileCreated;
Watcher.Changed += Watcher_FileModified;
Watcher.Renamed += Watcher_Renamed;
Watcher.Deleted += Watcher_Deleted;
// Begin watching.
Watcher.EnableRaisingEvents = true;
}
#endregion
#region Event Handling
private void Watcher_FileCreated(object sender, FileSystemEventArgs e)
{
OnFileCreated(e);
}
private void Watcher_FileModified(object sender, FileSystemEventArgs e)
{
OnFileModified(e);
}
private void Watcher_Renamed(object sender, RenamedEventArgs e)
{
OnFileRenamed(e);
}
private void Watcher_Deleted(object sender, FileSystemEventArgs e)
{
OnFileDeleted(e);
}
#endregion
#region Private Methods
private void SendMessage(string message)
{
MessageAvailableEventArgs eArgs = new MessageAvailableEventArgs();
eArgs.Message = message;
OnMessageAvailable(eArgs);
}
#endregion
#region Public Methods
public void Shutdown()
{
Watcher.EnableRaisingEvents = false;
Watcher.Dispose();
}
#endregion
}
}