Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS Xamarin计划计时器未启动_Xamarin_Xamarin.ios - Fatal编程技术网

iOS Xamarin计划计时器未启动

iOS Xamarin计划计时器未启动,xamarin,xamarin.ios,Xamarin,Xamarin.ios,我们在一个Xamarin(不是Forms)项目中有一个调度器逻辑,它存在了相当长的一段时间并且曾经工作过。随着一次iOS升级(可能是很久以前),调度程序停止触发事件 为什么下面的计时器不是每20秒启动一次?应用程序处于活动状态,屏幕处于打开状态,我验证了初始化代码只运行一次 var interval = TimeSpan.FromSeconds(20); Timer = NSTimer.CreateRepeatingScheduledTimer(interval, HandleScheduled

我们在一个Xamarin(不是Forms)项目中有一个调度器逻辑,它存在了相当长的一段时间并且曾经工作过。随着一次iOS升级(可能是很久以前),调度程序停止触发事件

为什么下面的计时器不是每20秒启动一次?应用程序处于活动状态,屏幕处于打开状态,我验证了初始化代码只运行一次

var interval = TimeSpan.FromSeconds(20);
Timer = NSTimer.CreateRepeatingScheduledTimer(interval, HandleScheduledEventMethod);

// ...

public void HandleScheduledEventMethod(NSTimer timer)
{
    // never executed, except for each call to Timer.Fire()
}
我按照Apple中的建议将其添加到nsrunlop中,但这也无济于事

NSRunLoop.Main.AddTimer(Timer, NSRunLoopMode.Common);

AddTimer
必须在主线程上调用,在后台线程上调用时它不起作用

DispatchQueue.MainQueue.DispatchQueue(() => {
  Timer = NSTimer.CreateRepeatingScheduledTimer(interval, HandleScheduledEventMethod);
  NSRunLoop.Main.AddTimer(Timer, NSRunLoopMode.Common);
})