我有这个类可以在一段时间内运行函数:
namespace Test
{
public static class At
{
private static void ExecuteDelayedAction(object o)
{
(o as Action).Invoke();
}
public static void Do(Action action, TimeSpan delay, int interval = Timeout.Infinite)
{
new Timer(new TimerCallback(At.ExecuteDelayedAction), action, Convert.ToInt32(delay.TotalMilliseconds), interval);
}
public static void Do(Action action, DateTime dueTime, int interval = Timeout.Infinite)
{
if (dueTime >= DateTime.Now) Do(action, dueTime - DateTime.Now, interval);
}
public static void Do(Action action, int delay, int interval = Timeout.Infinite)
{
Do(action, TimeSpan.FromMilliseconds(delay), interval);
}
}
}
而且在我的应用程序中,我有两个页面 -Login.xaml
和MainPage.xaml
. 仅出于测试目的,我在MainPage
构造函数中放入了以下代码:
public MainPage()
{
InitializeComponent();
At.Do(delegate { Debug.WriteLine("MainPage"); }, 5000);
}
我的问题如下:如果应用程序MainPage
首先打开,那么计时器工作正常并且委托被执行。但是,如果应用程序Login
首先打开然后导航到,MainPage
那么计时器就会静默失败。为什么会发生,如何解决?