FileSystemWatcher 的用法!

lfq_adam 2008-09-17 08:05:25
我用textbox1找到要显示的文件,在listBox1中显示其所以的子目录!
private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = folderBrowserDialog1.ShowDialog();
if (DialogResult.Cancel == dr)
return;
textBox1.Text = folderBrowserDialog1.SelectedPath;
FileSystemWatcher watch = new FileSystemWatcher(textBox1.Text);
watch.NotifyFilter = (NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName);
watch.Changed += new FileSystemEventHandler(OnChanged);//我每次运行到这里就直接过了,没有调用OnChanged
watch.EnableRaisingEvents = true;

}
private void OnChanged(object source, FileSystemEventArgs e)
{
WatcherChangeTypes changType = e.ChangeType;
string item = "";
item += DateTime.Now.ToString() + "---";
item += e.FullPath + ":";
item += changType.ToString();
listBox1.Items.Add(item);

}

这是什么原因呢?
...全文
119 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
JeffChung 2008-09-17
  • 打赏
  • 举报
回复
它并不是立刻执行onchange的事件,而是在watch.EnableRaisingEvents = true; 之后开始监控你的目的文件夹
当有对应的事件发生的时候发执行onchange的代码啊,比如你在那个文件夹里新建一个文件
jzywh 2008-09-17
  • 打赏
  • 举报
回复
看看这个sample

http://www.cnblogs.com/jzywh/archive/2008/07/23/filesystemwatcher.html
jzywh 2008-09-17
  • 打赏
  • 举报
回复
//我每次运行到这里就直接过了,没有调用OnChanged

??

OnChanged只有在有文件更新的时候才会触发。
jzywh 2008-09-17
  • 打赏
  • 举报
回复
FileSystemWatcher watch;

private void button1_Click(object sender, EventArgs e)
{
DialogResult dr = folderBrowserDialog1.ShowDialog();
if (DialogResult.Cancel == dr)
return;
textBox1.Text = folderBrowserDialog1.SelectedPath;
watch = new FileSystemWatcher(textBox1.Text);
watch.IncludeSubdirectories = true;
watch.NotifyFilter = (NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName);
watch.Changed += new FileSystemEventHandler(OnChanged);//我每次运行到这里就直接过了,没有调用OnChanged
watch.EnableRaisingEvents = true;

}
private void OnChanged(object source, FileSystemEventArgs e)
{
WatcherChangeTypes changType = e.ChangeType;
string item = "";
item += DateTime.Now.ToString() + "---";
item += e.FullPath + ":";
item += changType.ToString();
listBox1.Items.Add(item);

}



lfq_adam 2008-09-17
  • 打赏
  • 举报
回复
那要怎么改才可以啊?
初学者,希望能详细写!
谢谢!!!!!
JeffChung 2008-09-17
  • 打赏
  • 举报
回复
这个只是加上事件委托,不调用事件啊

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧