通过FileSystemWatcher更新UI控件

本文关键字:控件 UI 更新 FileSystemWatcher 通过 | 更新日期: 2023-09-27 17:49:39

我的代码有一些问题:

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控件

FileSystemWatcher通知发生在UI使用的另一个线程中。你必须Invoke参见:如何从另一个类更新windows窗体GUI ?

或者更好:如何从c#中的另一个线程更新GUI ?