2010-11-02 98 views
1

嗨 我想延迟屏幕导航。加载MainPage屏幕后,我想在3秒后导航到MainMenu屏幕。我为此写了下面的代码。Windows 7手机 - 延迟屏幕导航

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

只是出于兴趣,你有什么理由延迟? – 2010-11-03 11:51:44

+0

实际上,在显示启动画面后,我将用户带到显示特色产品图标的屏幕上,向用户介绍它们。我显示该屏幕3秒钟,然后将用户重定向到主菜单。 – Aqueel 2010-11-03 13:24:04

回答

3

你可以尝试两件事(和最后一刻的想法)。

1st,我见过有人抱怨Thread.Sleep()不工作,但在每种情况下,他们一直在UI线程上做它。我自己已经成功地使用了Thread.Sleep(),但是当它这样做的时候,它已经在后台工作线程中了。我还没有进一步调查,但你可能想看看。

在这里使用后台工作的一个很好的演练(在msdn上由Pham Tien Sinh发布)。

Phạm Tiểu Giao - Threads in WP7

第二,你coud或者实现定时器。这里有两个选项。

DispatcherTimer Class (System.Windows.Threading)

Timer Class (System.Threading)

哦,我想到的,因为你正在做一些启动导航弄虚作假一件事......结账彼得托对场所和重定向导航的主题无关的帖子。你可能会发现一些有用的宝石取决于你想要做什么。无论如何都要注意好的内容。

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

Redirecting an initial navigation - Peter Torr's Blog

+0

太棒了!我用Timer类,它工作完美。谢谢米克。 – Aqueel 2010-11-02 07:02:02

+0

yw :) ../15char – 2010-11-02 07:14:13

1

我只是用它和它的工作的罚款。以防万一,我说

using System.Threading; 

using System.Windows.Threading; 
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) 
     { 
     } 
    } 
}