2016-06-28 49 views
0

我想创建一个时钟,用C#与Windows窗体进出时钟。我希望将当前时间不断显示在屏幕上。我也希望能够在他或她的手机上ping老板wifi,然后用它来确定他们是否在大楼里。我尝试使用线程,但他们无法更新用户界面。我也尝试使用计时器,但它超级滞后。我也试过一个后台工作人员,但我认为你不能用后台工作人员更新UI。我希望能够每秒更新一次,并检查老板是否每分钟都在那里。请帮助我找到一种方法来做到这一点,而不是放慢一切。线程vs Backgroundworker与计时器 - 在C#中更新用户界面#

+1

'BackgroundWorker'具有在UI线程上执行的ReportProgress方法和相应的ProgressChanged事件。 ('ReportsProgress'属性必须设置为true来使用它)。或者您可能想查看['进度'](https://msdn.microsoft.com/en-us/library/hh193692(v = vs.110).aspx)类和['IProgress '](https://msdn.microsoft.com/en-us/library/hh138298(v = vs.110).aspx)接口。 –

回答

2

实际上,您可以通过后台调用做很多事情,更新UI是最简单的。

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

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

我已经从vb.net转换它,让我检查它。 –

+0

根据需要进行更新。 –