FileSystemWatcher - 在 UI 中记录结果

FileSystemWatcher - Log Results in UI

我正在构建一个程序,该程序应该监视某个项目文件夹中的源代码更改,然后将这些更改发送到某处,并在此过程中将更改的文件记录在 Windows Form TextBox 中。

代码看起来像这样:

void Form_Load(object sender, EventArgs e)
{
    FileSystemWatcher fsw = new FileSystemWatcher("C:\test");
    fsw.Created += File_Created;
}

void File_Created(object sender, FileSystemEventArgs e)
{
    string name = Path.GetFileName(e.FullPath);
    logs.Text += name + Environment.NewLine;
}

当然,这不是实际代码,但足以说明问题所在。 每次触发 File_Created 事件时,它都会创建一个新线程,因此我无法与该事件中的 UI 进行交互,它会引发异常。

除了日志记录部分,我程序中的其他所有东西都可以工作,但有点烦人。

有解决办法吗?

谢谢, 阿里克

如果您想从其他线程更新您的 UI,您需要使用:

Dispatcher.Invoke(new Action(() =>
{
   logs.Text += name + Environment.NewLine; 
}));

希望对您有所帮助