一定時間内に関数を実行するためのこのクラスがあります。
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);
}
}
}
また、私のアプリケーションには と の 2 つのページがLogin.xaml
ありMainPage.xaml
ます。テスト目的で、次のコードをMainPage
コンストラクターに入れました。
public MainPage()
{
InitializeComponent();
At.Do(delegate { Debug.WriteLine("MainPage"); }, 5000);
}
私の問題は次のとおりです。アプリケーションがMainPage
最初に開くと、タイマーが正常に機能し、デリゲートが実行されます。ただし、アプリケーションがLogin
最初に開いてからナビゲートするとMainPage
、タイマーはサイレントに失敗します。なぜそれが起こっているのですか、どうすれば修正できますか?