通过FileSystemWatcher更新UI控件

时间:2012-12-28 07:49:56

标签: c# treeview filesystemwatcher

我的代码中存在一些问题:

private void start_watcher()
    {
        fswFiler = new FileSystemWatcher(Control.filer.get_path(),"*.*");

        //fswStorage = new FileSystemWatcher(Control.storage.get_path());

        fswFiler.Changed += new FileSystemEventHandler(updatePend);
        fswFiler.Deleted += new FileSystemEventHandler(updatePend);
        fswFiler.Created += new FileSystemEventHandler(updatePend);
        fswFiler.Renamed += new RenamedEventHandler(updatePend);

        fswFiler.EnableRaisingEvents = true;

    }

    private void updatePend(object sender, FileSystemEventArgs e)
    {
        this.viewPend.Nodes.Clear();
        Control.filer.refresh_files_list();
        this.viewPend.Nodes.Add(Control.filer.get_files_node());
    }

让我退出了该计划。 知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

FileSystemWatcher通知发生在UI使用的另一个线程中。你必须Invoke 请参阅:how to update a windows form GUI from another class?

甚至更好:How to update the GUI from another thread in C#?