Windows 7手机 - 延迟屏幕导航

时间:2010-11-02 05:17:47

标签: c# windows-phone-7 navigation delay sleep

您好 我试图延迟屏幕导航。加载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秒)不存在。有人可以帮忙吗?

最好的问候

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关于地点和重定向导航主题的帖子。根据您的尝试,您可能会在那里找到一些有用的宝石。在任何情况下都要注意好的内容。

Introducing the concept of “Places” - Peter Torr's Blog

Redirecting an initial navigation - Peter Torr's Blog

答案 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)
        {
        }
    }
}