File io 跨线程操作无效:从创建控件的线程以外的线程访问控件

File io 跨线程操作无效:从创建控件的线程以外的线程访问控件,file-io,File Io,我正在编写一个filewatcher windows应用程序,它将查找指定文件夹中的更改,然后将详细信息记录在txt文件中 我完全遵循了下面这篇文章中提到的内容 当我从应用程序中点击F5,然后在正在监视的文件夹中创建或修改文件时,它会抛出下面提到的错误 请帮忙 跨线程操作无效:控件“txtFolderActivity”是从创建它的线程以外的线程访问的。您必须使用表单上的Invoke方法,例如,通过匿名委托对事件进行更改 事件处理程序由另一个线程引发。此第二个线程无法访问表单中的控件。它必须“调

我正在编写一个filewatcher windows应用程序,它将查找指定文件夹中的更改,然后将详细信息记录在txt文件中

我完全遵循了下面这篇文章中提到的内容

当我从应用程序中点击F5,然后在正在监视的文件夹中创建或修改文件时,它会抛出下面提到的错误

请帮忙


跨线程操作无效:控件“txtFolderActivity”是从创建它的线程以外的线程访问的。

您必须使用表单上的Invoke方法,例如,通过匿名委托对事件进行更改

事件处理程序由另一个线程引发。此第二个线程无法访问表单中的控件。它必须“调用”它们,让线程完成最初创建它们的所有控制工作

而不是:

myForm.Control1.Text = "newText";
你必须写:

myForm.Invoke(new Action(
delegate()
{
  myForm.Control1.Text = "newText";
}));

您正在尝试从非UI线程更新UI。UI具有线程关联,只能从创建它的线程更新。如果您使用的是WinForms,请查看MSDN文章。基本上,您需要通过方法更新UI。对于WPF,您需要使用。

基本上,您的应用程序中至少必须有两个线程,并且您的控制逻辑所在的线程不同,因此您会遇到此错误,因为这些控件不是线程安全的

这是为了防止多个线程同时更改同一控件可能导致的问题

通过查看此处,您可以找到更多详细信息:

+1-我需要尝试你的方法来解决这个问题,因为它比我目前的方法简单得多。