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;
}));
希望对您有所帮助
我正在构建一个程序,该程序应该监视某个项目文件夹中的源代码更改,然后将这些更改发送到某处,并在此过程中将更改的文件记录在 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;
}));
希望对您有所帮助