我想在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代碼不爲我工作:(如何在while(true)循環中在標籤中顯示結果
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'定時器,make s你可以設置'SynchronizingObject'屬性。有關示例,請參見[本答案](http://stackoverflow.com/a/24086028)。沒有它,它會拋出CrossThreadExceptions。 –