线程与后台工作者与计时器 - 在C#中更新UI

时间:2016-06-28 04:54:56

标签: c# .net multithreading

我正在尝试使用Windows窗体创建一个用于在C#中进行时钟输入和输出的时钟。我想不断地在屏幕上显示当前时间。我还希望能够在他或她的手机上ping老板wifi,然后使用它来确定他们是否在建筑物内。我尝试使用线程,但他们无法更新UI。我也尝试过使用计时器,但这是超级滞后的。我也尝试过后台工作者,但我认为你不能用后台工作者更新UI。我希望能够每秒更新一次,并检查老板是否每分钟都在那里。请帮助我找到一种方法来做到这一点,而不是减慢一切。

1 个答案:

答案 0 :(得分:2)

您实际上可以通过后台调用执行许多操作,更新UI最简单。

将以下代码放在需要更新UI的后台调用中。 UI只需要从自己的线程中调用。

this.Invoke((MethodInvoker)delegate {
                                    LabelStatus.Text = "Yeah its working";
                                    Label2.Text = "Updated UI";
                                    // do your stuff on UI thread
                                    });