Dim*_*tar 3 iphone xamarin.ios
我正在尝试创建一个计时器,每个刻度都更新一个标签,这是我到目前为止:
public override void ViewDidLoad ()
{
timer = new Timer ();
timer.Elapsed += new ElapsedEventHandler (TimerOnTick);
timer.Interval = 1000;
timer.Start ();
}
private void TimerOnTick (object obj, EventArgs ea)
{
timerLabel.Text = DateTime.Now.ToString ();
timerLabel.SetNeedsDisplay ();
}
Run Code Online (Sandbox Code Playgroud)
但这不会更新标签.在调试中我可以看到timerLabel.Text正在设置,但我不能让视图更新或重绘.
更新后,如何让我的视图重绘timerLabel.text?
标签未更新,因为System.Timers.Timer在单独的线程上调用处理程序.您不能在main之外的线程中更改ui元素.
将您的处理程序代码包含在主线程上执行:
private void TimerOnTick (object obj, EventArgs ea)
{
this.InvokeOnMainThread(delegate {
timerLabel.Text = DateTime.Now.ToString ();
timerLabel.SetNeedsDisplay ();
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3955 次 |
| 最近记录: |