一定時間内に関数を実行するためのこのクラスがあります。
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、タイマーはサイレントに失敗します。なぜそれが起こっているのですか、どうすれば修正できますか?