C# 通过FileSystemWatcher更新UI控件

C# 通过FileSystemWatcher更新UI控件,c#,treeview,filesystemwatcher,C#,Treeview,Filesystemwatcher,我的代码中有一些问题: private void start_watcher() { fswFiler = new FileSystemWatcher(Control.filer.get_path(),"*.*"); //fswStorage = new FileSystemWatcher(Control.storage.get_path()); fswFiler.Changed += new FileSystemEventHandle

我的代码中有一些问题:

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());
    }
把我赶出节目。
知道为什么会发生这种情况吗?

FileSystemWatcher通知发生在UI使用之外的另一个线程中。您必须
调用

见:


或者更好:

它在哪里或哪一行“将您从程序中抛出”
Control.filer.get\u path()
这是什么?它不会抛出异常..Control.filer.get\u path()-返回目录的字符串path@nadav通过在updatePend的第一行上放置一个断点,然后在代码中一步一步地执行,您可以找到它将您抛出程序的那一行。或者您可以在调试=>Exceptions…=>标记公共语言运行时异常旁边的复选框。