【发布时间】:2014-08-30 15:02:16
【问题描述】:
我想在 Windows 窗体的标签中自动刷新我的结果。此代码有效,但标签中的文本未更改。在我看来,程序必须停止他们的操作来刷新标签。 我也试过http://msdn.microsoft.com/en-us/library/system.timers.timer.elapsed.aspx和http://msdn.microsoft.com/query/dev12.query?appId=Dev12IDEF1&l=EN-US&k=k(EHInvalidOperation.WinForms.IllegalCrossThreadCall);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5);k(DevLang-csharp)&rd=true, 但它也不起作用。它说线程不同,他们做不到。 MSNDa 代码也对我不起作用:(。
private void button1_Click(object sender, EventArgs e)
{
while (true)
{
CaluclateTime();
Thread.Sleep(1000);
}
}
private void CaluclateTime()
{
DateTime zeroDateTime = new DateTime(2014, 9, 16, 15, 00, 0);
//zeroDateTime is a future :).
DateTime now = DateTime.Now;
TimeSpan duration = zeroDateTime - now;
label1.Text = String.Format("Time zero is in: {0}", duration.ToString());
}
【问题讨论】:
-
如果您使用
System.Timers.Timer计时器,请确保设置了SynchronizingObject属性。有关示例,请参阅this answer。没有它,它会抛出 CrossThreadExceptions。
标签: c# while-loop label