Skip to content

Commit 5c69d9b

Browse files
committed
address code violations
- ran dotnet format severity --info which set fields to readonly when appropriate and fixed spacing - made methods that did not access instanced variables static - since this was moved to net6.0 with nullable enabled, fields that were nullable have been properly declared as nullable - addressed naming rule violations in Demo
1 parent 8f92d45 commit 5c69d9b

6 files changed

Lines changed: 59 additions & 59 deletions

File tree

Source/Demo/Form1.Designer.cs

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/Demo/Form1.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public Form1()
1414

1515

1616

17-
private void btnStart_Click(object sender, EventArgs e)
17+
private void BtnStart_Click(object sender, EventArgs e)
1818
{
1919
_fw = new FileSystemWatcherEx(txtPath.Text.Trim());
2020

@@ -34,7 +34,7 @@ private void btnStart_Click(object sender, EventArgs e)
3434
btnStop.Enabled = true;
3535
}
3636

37-
private void FW_OnError(object sender, ErrorEventArgs e)
37+
private void FW_OnError(object? sender, ErrorEventArgs e)
3838
{
3939
if (txtConsole.InvokeRequired)
4040
{
@@ -46,28 +46,28 @@ private void FW_OnError(object sender, ErrorEventArgs e)
4646
}
4747
}
4848

49-
private void FW_OnChanged(object sender, FileChangedEvent e)
49+
private void FW_OnChanged(object? sender, FileChangedEvent e)
5050
{
5151
txtConsole.Text += string.Format("[cha] {0} | {1}",
5252
Enum.GetName(typeof(ChangeType), e.ChangeType),
5353
e.FullPath) + "\r\n";
5454
}
5555

56-
private void FW_OnDeleted(object sender, FileChangedEvent e)
56+
private void FW_OnDeleted(object? sender, FileChangedEvent e)
5757
{
5858
txtConsole.Text += string.Format("[del] {0} | {1}",
5959
Enum.GetName(typeof(ChangeType), e.ChangeType),
6060
e.FullPath) + "\r\n";
6161
}
6262

63-
private void FW_OnCreated(object sender, FileChangedEvent e)
63+
private void FW_OnCreated(object? sender, FileChangedEvent e)
6464
{
6565
txtConsole.Text += string.Format("[cre] {0} | {1}",
6666
Enum.GetName(typeof(ChangeType), e.ChangeType),
6767
e.FullPath) + "\r\n";
6868
}
6969

70-
private void FW_OnRenamed(object sender, FileChangedEvent e)
70+
private void FW_OnRenamed(object? sender, FileChangedEvent e)
7171
{
7272
txtConsole.Text += string.Format("[ren] {0} | {1} ----> {2}",
7373
Enum.GetName(typeof(ChangeType), e.ChangeType),
@@ -77,7 +77,7 @@ private void FW_OnRenamed(object sender, FileChangedEvent e)
7777

7878

7979

80-
private void btnStop_Click(object sender, EventArgs e)
80+
private void BtnStop_Click(object sender, EventArgs e)
8181
{
8282
_fw.Stop();
8383

@@ -88,7 +88,7 @@ private void btnStop_Click(object sender, EventArgs e)
8888
}
8989

9090

91-
private void btnSelectFolder_Click(object sender, EventArgs e)
91+
private void BtnSelectFolder_Click(object sender, EventArgs e)
9292
{
9393
var fb = new FolderBrowserDialog();
9494

Source/FileWatcherEx/FileEvents.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class FileChangedEvent
2525
/// <summary>
2626
/// The old full path (used if ChangeType = RENAMED)
2727
/// </summary>
28-
public string OldFullPath { get; set; } = "";
28+
public string? OldFullPath { get; set; } = "";
2929
}
3030

3131

Source/FileWatcherEx/FileSystemWatcherEx.cs

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ public class FileSystemWatcherEx : IDisposable
99

1010
#region Private Properties
1111

12-
private Thread _thread;
13-
private EventProcessor _processor;
14-
private BlockingCollection<FileChangedEvent> _fileEventQueue = new();
12+
private Thread? _thread;
13+
private EventProcessor? _processor;
14+
private readonly BlockingCollection<FileChangedEvent> _fileEventQueue = new();
1515

1616
private FileWatcher _watcher = new();
1717
private FileSystemWatcher _fsw = new();
1818

1919
// Define the cancellation token.
20-
private CancellationTokenSource _cancelSource = new();
20+
private readonly CancellationTokenSource _cancelSource = new();
2121

2222
#endregion
2323

@@ -52,27 +52,27 @@ public class FileSystemWatcherEx : IDisposable
5252
/// <summary>
5353
/// Gets or sets the object used to marshal the event handler calls issued as a result of a directory change.
5454
/// </summary>
55-
public ISynchronizeInvoke SynchronizingObject { get; set; }
55+
public ISynchronizeInvoke? SynchronizingObject { get; set; }
5656

5757
#endregion
5858

5959

6060

6161
#region Public Events
62-
public delegate void DelegateOnChanged(object sender, FileChangedEvent e);
63-
public event DelegateOnChanged OnChanged;
62+
public delegate void DelegateOnChanged(object? sender, FileChangedEvent e);
63+
public event DelegateOnChanged? OnChanged;
6464

65-
public delegate void DelegateOnDeleted(object sender, FileChangedEvent e);
66-
public event DelegateOnDeleted OnDeleted;
65+
public delegate void DelegateOnDeleted(object? sender, FileChangedEvent e);
66+
public event DelegateOnDeleted? OnDeleted;
6767

68-
public delegate void DelegateOnCreated(object sender, FileChangedEvent e);
69-
public event DelegateOnCreated OnCreated;
68+
public delegate void DelegateOnCreated(object? sender, FileChangedEvent e);
69+
public event DelegateOnCreated? OnCreated;
7070

71-
public delegate void DelegateOnRenamed(object sender, FileChangedEvent e);
72-
public event DelegateOnRenamed OnRenamed;
71+
public delegate void DelegateOnRenamed(object? sender, FileChangedEvent e);
72+
public event DelegateOnRenamed? OnRenamed;
7373

74-
public delegate void DelegateOnError(object sender, ErrorEventArgs e);
75-
public event DelegateOnError OnError;
74+
public delegate void DelegateOnError(object? sender, ErrorEventArgs e);
75+
public event DelegateOnError? OnError;
7676
#endregion
7777

7878

@@ -103,7 +103,7 @@ public void Start()
103103

104104
InvokeChangedEvent(SynchronizingObject, e);
105105

106-
void InvokeChangedEvent(object sender, FileChangedEvent fileEvent)
106+
void InvokeChangedEvent(object? sender, FileChangedEvent fileEvent)
107107
{
108108
if (SynchronizingObject != null && SynchronizingObject.InvokeRequired)
109109
{
@@ -122,7 +122,7 @@ void InvokeChangedEvent(object sender, FileChangedEvent fileEvent)
122122

123123
InvokeCreatedEvent(SynchronizingObject, e);
124124

125-
void InvokeCreatedEvent(object sender, FileChangedEvent fileEvent)
125+
void InvokeCreatedEvent(object? sender, FileChangedEvent fileEvent)
126126
{
127127
if (SynchronizingObject != null && SynchronizingObject.InvokeRequired)
128128
{
@@ -141,7 +141,7 @@ void InvokeCreatedEvent(object sender, FileChangedEvent fileEvent)
141141

142142
InvokeDeletedEvent(SynchronizingObject, e);
143143

144-
void InvokeDeletedEvent(object sender, FileChangedEvent fileEvent)
144+
void InvokeDeletedEvent(object? sender, FileChangedEvent fileEvent)
145145
{
146146
if (SynchronizingObject != null && SynchronizingObject.InvokeRequired)
147147
{
@@ -160,7 +160,7 @@ void InvokeDeletedEvent(object sender, FileChangedEvent fileEvent)
160160

161161
InvokeRenamedEvent(SynchronizingObject, e);
162162

163-
void InvokeRenamedEvent(object sender, FileChangedEvent fileEvent)
163+
void InvokeRenamedEvent(object? sender, FileChangedEvent fileEvent)
164164
{
165165
if (SynchronizingObject != null && SynchronizingObject.InvokeRequired)
166166
{
@@ -232,7 +232,7 @@ private void Thread_DoingWork(CancellationToken cancelToken)
232232
try
233233
{
234234
var e = _fileEventQueue.Take(cancelToken);
235-
_processor.ProcessEvent(e);
235+
_processor?.ProcessEvent(e);
236236
}
237237
catch (OperationCanceledException)
238238
{
@@ -260,7 +260,7 @@ public void Stop()
260260
// stop the thread
261261
_cancelSource.Cancel();
262262
}
263-
263+
264264

265265

266266
/// <summary>
@@ -271,6 +271,7 @@ public void Dispose()
271271
if (_fsw != null)
272272
{
273273
_fsw.Dispose();
274+
GC.SuppressFinalize(this);
274275
}
275276
}
276277

Source/FileWatcherEx/Helpers/EventProcessor.cs

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ internal class EventProcessor
1010
/// <summary>
1111
/// Aggregate and only emit events when changes have stopped for this duration (in ms)
1212
/// </summary>
13-
private static int EVENT_DELAY = 50;
13+
private static readonly int EVENT_DELAY = 50;
1414

1515
/// <summary>
1616
/// Warn after certain time span of event spam (in ticks)
1717
/// </summary>
18-
private static int EVENT_SPAM_WARNING_THRESHOLD = 60 * 1000 * 10000;
18+
private static readonly int EVENT_SPAM_WARNING_THRESHOLD = 60 * 1000 * 10000;
1919

20-
private System.Object LOCK = new System.Object();
21-
private Task delayTask = null;
20+
private readonly System.Object LOCK = new();
21+
private Task? delayTask = null;
2222

23-
private List<FileChangedEvent> events = new List<FileChangedEvent>();
24-
private Action<FileChangedEvent> handleEvent;
23+
private readonly List<FileChangedEvent> events = new();
24+
private readonly Action<FileChangedEvent> handleEvent;
2525

26-
private Action<string> logger;
26+
private readonly Action<string> logger;
2727

2828
private long lastEventTime = 0;
2929
private long delayStarted = 0;
@@ -32,7 +32,7 @@ internal class EventProcessor
3232
private bool spamWarningLogged = false;
3333

3434

35-
private IEnumerable<FileChangedEvent> NormalizeEvents(FileChangedEvent[] events)
35+
private static IEnumerable<FileChangedEvent> NormalizeEvents(FileChangedEvent[] events)
3636
{
3737
var mapPathToEvents = new Dictionary<string, FileChangedEvent>();
3838
var eventsWithoutDuplicates = new List<FileChangedEvent>();
@@ -64,7 +64,7 @@ private IEnumerable<FileChangedEvent> NormalizeEvents(FileChangedEvent[] events)
6464
{ // If <ANY> + RENAMED
6565
do
6666
{
67-
mapPathToEvents.TryGetValue(newEvent.OldFullPath, out var renameFromEvent); // Try get event from newEvent.OldFullPath
67+
mapPathToEvents.TryGetValue(newEvent.OldFullPath!, out var renameFromEvent); // Try get event from newEvent.OldFullPath
6868

6969
if (renameFromEvent != null && renameFromEvent.ChangeType == ChangeType.CREATED)
7070
{ // If rename from CREATED file
@@ -135,10 +135,10 @@ private IEnumerable<FileChangedEvent> NormalizeEvents(FileChangedEvent[] events)
135135
if (deletedPaths.Any(d => IsParent(e.Value.FullPath, d)))
136136
{
137137
return false; // DELETE is ignored if parent is deleted already
138-
}
138+
}
139139

140-
// otherwise mark as deleted
141-
deletedPaths.Add(e.Value.FullPath);
140+
// otherwise mark as deleted
141+
deletedPaths.Add(e.Value.FullPath);
142142
}
143143

144144
return true;
@@ -148,7 +148,7 @@ private IEnumerable<FileChangedEvent> NormalizeEvents(FileChangedEvent[] events)
148148
}
149149

150150

151-
private bool IsParent(string p, string candidate)
151+
private static bool IsParent(string p, string candidate)
152152
{
153153
return p.IndexOf(candidate + '\\') == 0;
154154
}
@@ -189,35 +189,34 @@ public void ProcessEvent(FileChangedEvent fileEvent)
189189
if (delayTask == null)
190190
{
191191
// Create function to buffer events
192-
Action<Task> func = null;
193-
func = (Task value) =>
192+
void func(Task value)
194193
{
195194
lock (LOCK)
196195
{
197-
// Check if another event has been received in the meantime
198-
if (delayStarted == lastEventTime)
196+
// Check if another event has been received in the meantime
197+
if (delayStarted == lastEventTime)
199198
{
200-
// Normalize and handle
201-
var normalized = NormalizeEvents(events.ToArray());
199+
// Normalize and handle
200+
var normalized = NormalizeEvents(events.ToArray());
202201
foreach (var e in normalized)
203202
{
204203
handleEvent(e);
205204
}
206205

207-
// Reset
208-
events.Clear();
206+
// Reset
207+
events.Clear();
209208
delayTask = null;
210209
}
211210

212-
// Otherwise we have received a new event while this task was
213-
// delayed and we reschedule it.
214-
else
211+
// Otherwise we have received a new event while this task was
212+
// delayed and we reschedule it.
213+
else
215214
{
216215
delayStarted = lastEventTime;
217216
delayTask = Task.Delay(EVENT_DELAY).ContinueWith(func);
218217
}
219218
}
220-
};
219+
}
221220

222221
// Start function after delay
223222
delayStarted = lastEventTime;

Source/FileWatcherEx/Helpers/FileWatcher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internal class FileWatcher : IDisposable
99
{
1010
private string _watchPath = string.Empty;
1111
private Action<FileChangedEvent>? _eventCallback = null;
12-
private Dictionary<string, FileSystemWatcher> _fwDictionary = new();
12+
private readonly Dictionary<string, FileSystemWatcher> _fwDictionary = new();
1313
private Action<ErrorEventArgs>? _onError = null;
1414

1515

0 commit comments

Comments
 (0)