我正在开发我的第一个 Windows 8 应用程序。我需要检测用户是否在 3 分钟后停止导航并重定向到主页。
你有任何想法如何做到这一点(我在这个应用程序中使用 XAML)?
此致
我正在开发我的第一个 Windows 8 应用程序。我需要检测用户是否在 3 分钟后停止导航并重定向到主页。
你有任何想法如何做到这一点(我在这个应用程序中使用 XAML)?
此致
OnNavigatedTo
在你的函数中启动一个计时器。OnNavigatedFrom
函数中的计时器。您可以使用DispatcherTimer
:
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMinutes(3);
timer.Tick += (s,e) => GoBack();
timer.Start();
有两种方法。
首先是使用Reactive Extensions。
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();
}
第二种方法是创建一个计时器,用于检查当前日期与您记录上次导航活动的日期。它的效率远低于 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();
要么会工作