2010-11-02 18 views
1

Salut J'essaie de retarder la navigation à l'écran. Après avoir chargé l'écran MainPage, je souhaite accéder à l'écran MainMenu après 3 secondes. J'ai écrit le code suivant pour cela.Windows 7 Phone - Mettre un retard dans la navigation à l'écran

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)); 
    } 

Mais ce code ne semble pas fonctionner. Le délai attendu (3 secondes) n'est pas là. quelqu'un peut-il aider s'il vous plait?

Cordialement

+0

Juste par intérêt, quelle est la raison de votre retard? –

+0

En fait, après l'affichage de l'écran de démarrage, j'amène l'utilisateur à un écran sur lequel j'affiche des icônes de produits en vedette pour présenter l'utilisateur à eux. J'affiche cet écran pendant 3 secondes, puis redirige l'utilisateur vers le menu principal. – Aqueel

Répondre

3

deux choses que vous pouvez essayer (et une pensée de dernière minute).

1er, J'ai vu des gens se plaindre que le Thread.Sleep() ne fonctionne pas, mais dans chaque cas, ils l'ont fait sur le thread de l'interface utilisateur. J'ai moi-même utilisé Thread.Sleep() avec succès, mais dans ce cas, j'ai utilisé un thread de travail en arrière-plan. Je n'ai pas encore enquêté sur cette question, mais vous voudrez peut-être vérifier.

Une bonne marche à suivre sur l'utilisation de travailleur de fond ici (posté par Pham Tien Sinh sur msdn).

Phạm Tiểu Giao - Threads in WP7

2ème, vous coud alternativement mettre en œuvre une minuterie. Deux options pour ça ici. sur le thème des lieux et rediriger la navigation

DispatcherTimer Class (System.Windows.Threading)

Timer Class (System.Threading)

Oh, une autre chose qui vient à l'esprit, puisque vous faites quelques astuces de navigation de démarrage ... messages checkout Peter Torr . Vous pourriez trouver quelques gemmes utiles en fonction de ce que vous essayez de faire. Bon contenu à connaître dans tous les cas.

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

Redirecting an initial navigation - Peter Torr's Blog

+0

C'était génial! J'ai utilisé la classe Timer et ça a fonctionné parfaitement. Merci Mick. – Aqueel

+0

yw :) ../15char –

1

Je viens d'utiliser et il a bien fonctionné. Juste au cas où j'ai ajouté

using System.Threading; 

et

using System.Windows.Threading; 
0

Si vous voulez gel application (par exemple, vous devez tester threads) et pour certaines raisons pour lesquelles vous ne voulez pas utiliser Thread.Sleep () vous pouvez faire votre propre, simplement la fonction de sommeil

public static class Threads 
{ 
    public static void Sleep(int milisec) 
    { 
     DateTime now = DateTime.Now; 
     DateTime endOfSleep = now.AddMilliseconds(milisec); 

     while (DateTime.Now < endOfSleep) 
     { 
     } 
    } 
}