在Xamarin.iOS中的何处添加计时器?

在Xamarin.iOS中的何处添加计时器?,ios,xamarin,xamarin.ios,Ios,Xamarin,Xamarin.ios,当我显示页面时,我需要每一分钟发出一次请求,以更新显示的表中的数据。我不知道在哪里添加这个计时器逻辑,因为所有的控制器生命周期方法都应该在适当的时间结束-我猜 我应该把计时器放在哪里?既然你说你需要在显示页面后每一分钟发出一次请求,那么好的解决方案是在viewwillappease()方法中启动计时器,并在viewwilldiscover()中停止计时器-它将在ViewController在前台可见时运行。解除OnTimedEvent的绑定对于避免内存泄漏非常重要 这是你需要的还是你有更具体的要

当我显示页面时,我需要每一分钟发出一次请求,以更新显示的表中的数据。我不知道在哪里添加这个计时器逻辑,因为所有的控制器生命周期方法都应该在适当的时间结束-我猜


我应该把计时器放在哪里?

既然你说你需要在显示页面后每一分钟发出一次请求,那么好的解决方案是在
viewwillappease()
方法中启动计时器,并在
viewwilldiscover()
中停止计时器-它将在ViewController在前台可见时运行。解除
OnTimedEvent
的绑定对于避免内存泄漏非常重要

这是你需要的还是你有更具体的要求

示例代码:

class MyViewController : UIViewController
{
    public MyViewController(IntPtr handle)
        : base(handle)
    {
    }

    private Timer timer;
    private bool timerEventBinded;

    public override void ViewWillAppear(bool animated)
    {
         base.ViewWillAppear(animated);
         if (timer == null)
         {
            timer = new Timer();
            timer.Enabled = true;
            timer.Interval = 60000;
         }

         if (!timerEventBinded)
         {
            timer.Elapsed += OnTimedEvent;
            timerEventBinded = true;
         }

         timer.Start();
    }

    public override void ViewWillDisappear(bool animated)
    {
        if (timer != null)
        {
           timer.Stop();
           if (timerEventBinded)
           {
              timer.Elapsed -= OnTimedEvent;
              timerEventBinded = false;
           }
           timer = null;
        }

        base.ViewWillDisappear(animated);
    }

    private void OnTimedEvent(Object src, ElapsedEventArgs e)
    {
        //do your stuff
    }
}

我猜你必须在
视图中调用并计划计时器将出现:
方法,并在
视图中将其无效并设置为nil将消失:
方法。你可以在ViewWillDisplay中启动计时器,但如果你想在应用程序未激活时进行此更新,你必须使用后台提取,并可以告诉iOS你希望更新的频率,但iOS会规定何时允许您进行更新。我建议您添加一些适当的理由来解释为什么OP需要这段代码。只留下一段代码并说“这对我有用”不是一个好答案。@Cheesebaron当然,刚刚添加了。@DavidRiha当应用程序在后台时,这不起作用,而且我相信,用户不希望应用程序在几个小时内保持打开状态。@AkashKava是的,它不起作用。你看过问题了吗?“当我显示页面时,我需要每一分钟发出一次请求,以更新显示的表格中的数据。”在我看来,他/她并不想每分钟更新表格,即使应用程序在后台。