This program uses a FileSystemWatcher static field. We initialize it with the new keyword in Init(). We add its Changed event handler.
using System;
using System.IO;
class Program
{
static void Main()
{
Console.WriteLine(
"MAIN");
Init();
// Run an infinite loop.
while (true)
{
Console.WriteLine(
"TYPE SOMETHING");
string line = Console.ReadLine();
Console.WriteLine(
"TYPED: " + line);
}
}
/// <summary>
/// Watcher.
/// </summary>
static FileSystemWatcher _watcher;
/// <summary>
/// Init.
/// </summary>
static void Init()
{
Console.WriteLine(
"INIT");
string directory = @
"C:\programs\";
Program._watcher = new FileSystemWatcher(directory);
Program._watcher.Changed +=
new FileSystemEventHandler(Program._watcher_Changed);
Program._watcher.EnableRaisingEvents = true;
Program._watcher.IncludeSubdirectories = true;
}
/// <summary>
/// Handler.
/// </summary>
static void _watcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine(
"CHANGED, NAME: " + e.Name);
Console.WriteLine(
"CHANGED, FULLPATH: " + e.FullPath);
// Can change program state (set invalid state) in this method.
// ... Better to use insensitive compares for file names.
}
}
MAIN
INIT
TYPE SOMETHING
test
TYPED: test
TYPE SOMETHING
CHANGED, NAME: file.txt
CHANGED, FULLPATH: C:\programs\file.txt
CHANGED, NAME: file.txt
CHANGED, FULLPATH: C:\programs\file.txt
hello
TYPED: hello
TYPE SOMETHING
CHANGED, NAME: file.txt
CHANGED, FULLPATH: C:\programs\file.txt
CHANGED, NAME: file.txt
CHANGED, FULLPATH: C:\programs\file.txt
HELLO WORLD!
X2
X3