Hello,
I have the following app. It works great as a console app. It tracks any file changes, renames, or errors:
I'm trying to port the same app to windows forms.
But the following code does not display anything in textbox1. any ideas?
Any ideas at what I'm doing wrong?
Thanks
I have the following app. It works great as a console app. It tracks any file changes, renames, or errors:
Code:
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher(@"C:\");
watcher.NotifyFilter = (NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName);
watcher.IncludeSubdirectories = true;
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
watcher.Error += new ErrorEventHandler(OnError);
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press 'Enter' to exit...");
Console.ReadLine();
}
private static void OnChanged(object source, FileSystemEventArgs e)
{
WatcherChangeTypes changeType = e.ChangeType;
Console.WriteLine("File {0} {1}", e.FullPath, changeType.ToString());
}
private static void OnRenamed(object source, RenamedEventArgs e)
{
WatcherChangeTypes changeType = e.ChangeType;
Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, changeType.ToString());
}
private static void OnError(object source, ErrorEventArgs e)
{
Console.WriteLine("An error has occurred.");
}
But the following code does not display anything in textbox1. any ideas?
Code:
string str = "";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
FileSystemWatcher watcher = new FileSystemWatcher(@"C:\");
watcher.NotifyFilter = (NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName);
watcher.IncludeSubdirectories = true;
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Created += new FileSystemEventHandler(OnChanged);
watcher.Deleted += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
watcher.Error += new ErrorEventHandler(OnError);
watcher.EnableRaisingEvents = true;
}
private void OnChanged(object source, FileSystemEventArgs e)
{
str.Insert(str.Length, (e.FullPath + " " + e.ChangeType.ToString() + "\n"));
textBox1.Invoke(new MethodInvoker(delegate { textBox1.Text = str; }));
}
private void OnRenamed(object source, RenamedEventArgs e)
{
str.Insert(str.Length, (e.OldFullPath + " " + e.FullPath + " to " + e.ChangeType.ToString() + "\n"));
textBox1.Invoke(new MethodInvoker(delegate { textBox1.Text = str; }));
}
private void OnError(object source, ErrorEventArgs e)
{
str.Insert(str.Length, ("An error has occurred." + "\n"));
textBox1.Invoke(new MethodInvoker(delegate { textBox1.Text = str; }));
}
Thanks
Comment