MyOddWeb.DirectoryWatcher
0.0.1
See the version list below for details.
dotnet add package MyOddWeb.DirectoryWatcher --version 0.0.1
NuGet\Install-Package MyOddWeb.DirectoryWatcher -Version 0.0.1
<PackageReference Include="MyOddWeb.DirectoryWatcher" Version="0.0.1" />
paket add MyOddWeb.DirectoryWatcher --version 0.0.1
#r "nuget: MyOddWeb.DirectoryWatcher, 0.0.1"
// Install MyOddWeb.DirectoryWatcher as a Cake Addin #addin nuget:?package=MyOddWeb.DirectoryWatcher&version=0.0.1 // Install MyOddWeb.DirectoryWatcher as a Cake Tool #tool nuget:?package=MyOddWeb.DirectoryWatcher&version=0.0.1
Myoddweb.Directorywatcher
A fast and reliable File/Directory watcher for c#/c++ to replace the current .NET FileSystemWatcher
class.
What it does
- Reliable monitoring of
- Renamed files/directories
- Deleted files/directories
- Created files/directories
- All exceptions are passed back to the caller.
- Non-blocking delegates, if one function takes a long time ... we don't all have to suffer.
- The interface does allow for porting to other platforms.
- No buffer limitations, (well there is, but we play nicely).
- Try and remove duplicates, (where possible).
Use case
My needs were to, reliably, monitor entire volumes for created/deleted/renamed files. I do really care for pattern matching.
What it doesn't do
- Bring me coffee.
The issue(s) with FileSystemWatcher
The current version of File Watcher is great, but it does have a couple of issues.
- There is a buffer limitation, (in the API itself), and a badly written application can 'block' or 'miss' certain notification.
- Duplicates are often sent, (when a file is updated 3 times between calls, we only need to know about the once).
- Certain Exceptions cause the entire app to close.
- UNC/Unix files are not supported, (in fact it causes
FileSystemWatcher
to take your system down). - Does not handle large volumes nicely.
Example
Simple Watch
Add all the directories we want to 'observe'
var watch = new Watcher();
watch.Add(new Request("c:\\", true));
watch.Add(new Request("d:\\foo\\bar\\", true));
watch.Add(new Request("y:\\", true));
Then start
// start watching
watch.Start();
Get notifications in case a file is created.
watch.OnAddedAsync += async (f, t) =>
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(
$"[{f.DateTimeUtc.Hour}:{f.DateTimeUtc.Minute}:{f.DateTimeUtc.Second}]:{f.FileSystemInfo}");
Console.ForegroundColor = foreground;
};
we get given the file that was added as well as a cancellation token
And when we are done stop it ...
watch.Stop();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net452 is compatible. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.5.2
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
0.1.9 | 64,616 | 8/2/2020 | |
0.1.8 | 1,536 | 6/19/2020 | |
0.1.7 | 1,543 | 1/3/2020 | |
0.1.7-alpha1 | 944 | 12/15/2019 | |
0.1.6 | 1,140 | 11/24/2019 | |
0.1.5 | 950 | 11/15/2019 | |
0.1.4 | 977 | 11/13/2019 | |
0.1.3 | 4,779 | 5/1/2019 | |
0.1.2 | 1,332 | 1/26/2019 | |
0.1.1 | 1,099 | 1/25/2019 | |
0.1.0 | 1,242 | 10/19/2018 | |
0.0.5 | 1,266 | 10/9/2018 | |
0.0.4 | 1,154 | 10/9/2018 | |
0.0.1.1 | 1,184 | 10/7/2018 | |
0.0.1 | 1,162 | 10/7/2018 |