2011-05-14 2 views
3

내가 레이블 모든 틱을 업데이트하는 타이머를 만들려고 해요를 업데이트 한 후 UILabel의 다시 그리기 질수, 이것은 내가 지금까지있는 것입니다. 디버그에서 나는 timerLabel.Text이 설정되고 있음을 알 수 있지만 뷰를 업데이트하거나 다시 그릴 수는 없습니다.텍스트

timerLabel.text을 업데이트 한 후 내보기를 다시 그리도록하려면 어떻게해야합니까?

답변

6

System.Timers.Timer가 별도의 스레드에서 처리기를 호출하기 때문에 레이블이 업데이트되지 않습니다. 메인 이외의 스레드에서 UI 요소를 변경할 수 없습니다.

핸들러 코드를 동봉는 주 스레드에서 실행되는 :

private void TimerOnTick (object obj, EventArgs ea) 
{ 
    this.InvokeOnMainThread(delegate { 
     timerLabel.Text = DateTime.Now.ToString(); 
     timerLabel.SetNeedsDisplay(); 
    }); 
} 
+1

거대한 감사합니다! 나는 한 시간 동안이 일에 매달 렸습니다. – Dimitar