如何让工作线程更新窗口窗体中的ui [不使用Control.Invoke()]?

时间:2009-11-14 20:06:12

标签: c# winforms multithreading

我知道使用Control.InvokeRequired()和Control.Invoke()的方式。

但我想知道是否可以使用其他方法来提醒ui线程数据已被更改,然后让ui线程更新其控件而不使用control.invoke()。

据我记得,在mfc之前可以通过向主窗口发送消息来实现这一点,所以我想知道Windows窗体中是否存在类似的东西。

3 个答案:

答案 0 :(得分:3)

这正是Invoke正在做的事情。

以下是有关好奇的更多信息:http://weblogs.asp.net/justin_rogers/pages/126345.aspx

答案 1 :(得分:2)

通过发送消息来实现

invoke / begininvoke。

答案 2 :(得分:1)

您可以使用Timer来检查工作线程定期写入的字段,并在必要时更新UI。该计时器在UI线程上运行,因此不必调用。

这是一个可怕的想法,我现在要惩罚自己建议。