iOS Xamarin 预定计时器未触发
iOS Xamarin scheduled timer not firing
我们在 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 docs 的建议将其添加到 NSRunLoop,但这也没有帮助。
NSRunLoop.Main.AddTimer(Timer, NSRunLoopMode.Common);
AddTimer
必须在主线程调用,后台线程调用无效
DispatchQueue.MainQueue.DispatchQueue(() => {
Timer = NSTimer.CreateRepeatingScheduledTimer(interval, HandleScheduledEventMethod);
NSRunLoop.Main.AddTimer(Timer, NSRunLoopMode.Common);
})
我们在 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 docs 的建议将其添加到 NSRunLoop,但这也没有帮助。
NSRunLoop.Main.AddTimer(Timer, NSRunLoopMode.Common);
AddTimer
必须在主线程调用,后台线程调用无效
DispatchQueue.MainQueue.DispatchQueue(() => {
Timer = NSTimer.CreateRepeatingScheduledTimer(interval, HandleScheduledEventMethod);
NSRunLoop.Main.AddTimer(Timer, NSRunLoopMode.Common);
})