您好 我试图延迟屏幕导航。加载MainPage屏幕后,我想在3秒后导航到MainMenu屏幕。我为此编写了以下代码。
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Default_Loaded);
}
private void Default_Loaded(object sender, RoutedEventArgs e)
{
Thread.Sleep(3000);
this.NavigationService.Navigate(new Uri("/MyProject;component/MainMenu.xaml", System.UriKind.RelativeOrAbsolute));
}
但是这段代码似乎不起作用。预期的延迟(3秒)不存在。有人可以帮忙吗?
最好的问候
答案 0 :(得分:3)
你可以尝试两件事(最后一刻想到)。
第一次,我看到人们抱怨Thread.Sleep()不起作用,但在每种情况下他们都在UI线程上做过。我自己成功使用了Thread.Sleep(),但是当这样做时,它已经在后台工作线程中。我还没有进一步调查,但你可能想看一下。
在这里使用后台工作者的一个很好的演练(由Pham Tien Sinh在msdn上发布)。
Phạm Tiểu Giao - Threads in WP7
第二次,您可以选择实施计时器。这里有两个选择。
DispatcherTimer Class (System.Windows.Threading)
Timer Class (System.Threading)
哦,想到的另一件事,因为你正在做一些启动导航技巧......结帐Peter Torr关于地点和重定向导航主题的帖子。根据您的尝试,您可能会在那里找到一些有用的宝石。在任何情况下都要注意好的内容。
答案 1 :(得分:1)
我刚刚使用它并且工作正常。以防我添加
using System.Threading;
和
using System.Windows.Threading;
答案 2 :(得分:0)
如果您想要冻结应用程序(例如,您需要测试线程),并且由于某些原因您不想使用Thread.Sleep(),您可以创建自己的,简单的睡眠功能
public static class Threads
{
public static void Sleep(int milisec)
{
DateTime now = DateTime.Now;
DateTime endOfSleep = now.AddMilliseconds(milisec);
while (DateTime.Now < endOfSleep)
{
}
}
}