我发现对于我目前的情况看起来像一个非常简单的解决方案。使用匿名方法从单独的线程更新GUI的说明
我目前的情况是,我想对新线程做一些I/O操作,这样我就不会陷入我的GUI线程。我有一个函数,作为我的表单的一员,已经完成了这些I/O操作,但是在GUI线程上运行它确实使应用程序很难使用。所以我的计划是在一个新的线程中运行这个函数。所以,我在表单中创建了一个Thread变量,并试图让它使用该函数作为ThreadStart参数。但它似乎并不喜欢它。
我发现一个优雅的外观解决方案,作为对另一个线程的响应,here。
///...blah blah updating files
string newText = "abc"; // running on worker thread
this.Invoke((MethodInvoker)delegate {
someLabel.Text = newText; // runs on UI thread
});
///...blah blah more updating files
从该响应的外观上来看,我可以在一个新的线程中运行该功能,然后可以使用匿名函数来更新自己的状态,当线程完成计算。尽管如此,我还不足以填补答复的空白。
所有我似乎读到的线程说,我的ThreadStart函数需要是一个新类中的静态方法。这个回应似乎表明我可以在我的Form类中完成它,所以this
引用仍然引用我的Form实例。否则,如果我的ThreadStart参数是一个不同的类,我不得不传入对Form实例的引用,这看起来像更多的代码,对吧?
有人会帮我填写该回复的上下文吗?提前致谢!
哦,真棒。我不知道这存在!非常感谢你。 – Ryan 2012-07-24 16:35:29