2010-11-02 78 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) 
     { 
     } 
    } 
}