Windows Form에서 결과를 레이블에서 자동으로 새로 고치고 싶습니다. 이 코드는 작동하지만 레이블의 텍스트는 변경되지 않습니다. 제 견해로 프로그램은 레이블을 새로 고치기 위해 작업을 중단해야합니다. 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' 타이머를 사용하고, s를 만듭니다. 'SynchronizingObject' 속성을 설정했는지 확인하십시오. 예제는 [이 답변] (http://stackoverflow.com/a/24086028)을 참조하십시오. 그것 없이는 CrossThreadExceptions를 던질 것이다. –