0

私は最初のWindows8アプリケーションを開発しています。ユーザーが3分後にナビゲーションを停止したかどうかを検出し、ホームページにリダイレクトする必要があります。

これを行う方法について何かアイデアはありますか(このアプリケーションではXAMLを使用しています)??

よろしくお願いします

4

2 に答える 2

0
  • 関数でタイマーを開始しますOnNavigatedTo
  • 関数のタイマーをリセットしOnNavigatedFromます。
  • タイマーの期限が切れたら、元に戻ります

あなたは使用することができますDispatcherTimer

    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromMinutes(3);
    timer.Tick += (s,e) => GoBack();
    timer.Start(); 
于 2012-10-05T11:32:09.307 に答える
0

2つの方法があります。

1つは、 ReactiveExtensionsを使用することです。

private static void Main()
{
    Console.WriteLine(DateTime.Now);

    // create a single event in 10 seconds time
    var observable = Observable.Timer(TimeSpan.FromSeconds(10)).Timestamp();

    // raise exception if no event received within 9 seconds
    var observableWithTimeout = Observable.Timeout(observable, TimeSpan.FromSeconds(9));

    using (observableWithTimeout.Subscribe(
        x => Console.WriteLine("{0}: {1}", x.Value, x.Timestamp), 
        ex => Console.WriteLine("{0} {1}", ex.Message, DateTime.Now)))
    {
        Console.WriteLine("Press any key to unsubscribe");
        Console.ReadKey();
    }

    Console.WriteLine("Press any key to exit");
    Console.ReadKey();
}

2番目の方法は、現在の日付と最後のナビゲーションアクティビティを記録した日付をチェックするタイマーを作成することです。RXよりもはるかに効率が悪いですが、あなたはそれを好むかもしれません。タイマーをApp.XAML.csに配置して、グローバルに処理されるようにします。そうすれば簡単です。

var _Timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
_Timer.Tick += (s, args) =>
{
    if (m_LastNavigationDate.Add(TimeSpan.FromMinutes(3)) < DateTime.Now)
        RaiseTimeout();
};
_Timer.Start();

どちらでも動作します

于 2012-10-05T22:59:29.600 に答える