locked
Reprise de l'application bloquée RRS feed

  • Question

  • Bonjour à tous,

    J'ai donc une PhoneApplicationPage , dans celle-ci j'ai une webview qui lors du clic sur celle-ci amène vers un lien.

    Lorsque l'utilisateur clic sur le bouton retour de téléphone ma page revient et je souhaites donc retourner automatiquement à la page précédente.

    Hors soit le téléphone est bloqué à "reprise..." on ne reprend pas dutout l'application.

    protected async override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
    
       if (!e.NavigationMode ==       System.Windows.Navigation.NavigationMode.New) 
       {
    
    // avec ou sans le Task.Delay c'est pareil
    await Task.Delay(800);
    NavigationService.GoBack();
       }
    }

    Est-ce que vous auriez une idée ? Merci


    Florian R SAS

    jeudi 29 janvier 2015 08:54

Réponses

  • Un effet de bord, dans votre cas, serait un morceau de code effectue quelque chose en dehors du cours normal de votre programme et va en perturber son bon fonctionnement. C'est un grand classique de l'évènementiel ou de l'asynchrone.

    Dans votre cas je ne sais pas ce que font exactement cette partie :

    timer.Stop();
    MobilAirInterstitialAds.Closed(false, NumberSecondsElapsed());
    

    Mais elle a l'air de fonctionne en asynchrone, il n'est pas impossible que ce code provoque quelque-chose qui fait que lorsque vous arrivez sur votre GoBack(), le cours de l'application se bloque.

    C'est pour cela que si vous désactiver votre code puis testez par exemple ligne par ligne, a un moment vous trouverez la/lignes de codes qui ont l'air de poser problème, et donc de déterminer ce qui poserait problème.

    Cordialement,


    Yan Grenier

    vendredi 30 janvier 2015 13:31

Toutes les réponses

  • Bonjour,

     Qu'est-ce que ce passe si vous écrivez cela:

    if (e.NavigationMode != System.Windows.Navigation.NavigationMode.New) 

    Cordialement,

    Nina



    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.


    vendredi 30 janvier 2015 08:47
  • Bonjour, oui désolé  l'erreur de syntaxe provient juste de l'exemple car je ne voulais pas copier coller tout mon code. Mais le problème de vient pas de là c'est bien le 

    NavigationService.GoBack();

    qui pose problème


    Florian R SAS

    vendredi 30 janvier 2015 08:57
  • Bonjour,

    Votre code est sensé fonctionner (j'ai ce type de code dans une de mes applications), donc les seuls points que je verrais :

    - Avez vous vérifiez que vous pouvez faire un GoBack ?

    if(NavigationService.CanGoBack){ NavigationService.GoBack(); }

    - Est-ce que votre GoBack fonctionne en dehors d'une suspension, par exemple depuis un bouton: peut-être que ce n'est pas la suspension qui pose problème mais une partie de votre code plante, et lors de la reprise le système de met en carafe.

    Cordialement,


    Yan Grenier

    vendredi 30 janvier 2015 10:42
  • Bonjour Yan,

    Oui en effet en cliquant sur un bouton cela se bloque aussi.

    private void button_close_Click(object sender, RoutedEventArgs e)
            {
                timer.Stop();
                MobilAirInterstitialAds.Closed(false, NumberSecondsElapsed());
                NavigationService.GoBack();
            }

    pourtant je stop juste un timer et la méthode du dessous est une méthode statique 

    public static void Closed(bool completed, int time_close)
            {
    
                if (listener != null)
                    listener.OnClosed(completed, time_close);
            }
    
     public interface Listener
        {
    
             void OnClosed(bool completed, int time_close);
    
        }


    Florian R SAS

    vendredi 30 janvier 2015 10:50
  • Et quand vous faites du pas à pas, l'exécution se bloque quelque part ou vous entrez dans une sorte de boucle infinie ?

    Cordialement,


    Yan Grenier

    vendredi 30 janvier 2015 10:55
  • Il semble se bloquer dans ne boucle infinie à partir de GoBack(),

    En plus de cela le bug est aléatoire, une fois sur trois sa bug


    Florian R SAS

    vendredi 30 janvier 2015 10:58
  • Vous dîtes "semble" mais vous avez testé ? Votre exécution de code s'arrête bien à cet endroit de votre code ?

    Cordialement,


    Yan Grenier

    vendredi 30 janvier 2015 11:06
  • Oui oui j'en suis sûr.

    Florian R SAS

    vendredi 30 janvier 2015 13:12
  • Alors je pense que vous avez un problème de type effet de bord.

    Je vous conseille de désactiver votre code (en le commentant) puis de réactiver votre code petit à petit jusqu'à parvenir à reprovoquer le comportement, et ainsi avoir une piste sur ce qui pose problème.

    Cordialement,


    Yan Grenier

    vendredi 30 janvier 2015 13:18
  • Merci Yan, mais qu'est-ce qu'un problème effet de bord ?

    Florian R SAS

    vendredi 30 janvier 2015 13:20
  • Un effet de bord, dans votre cas, serait un morceau de code effectue quelque chose en dehors du cours normal de votre programme et va en perturber son bon fonctionnement. C'est un grand classique de l'évènementiel ou de l'asynchrone.

    Dans votre cas je ne sais pas ce que font exactement cette partie :

    timer.Stop();
    MobilAirInterstitialAds.Closed(false, NumberSecondsElapsed());
    

    Mais elle a l'air de fonctionne en asynchrone, il n'est pas impossible que ce code provoque quelque-chose qui fait que lorsque vous arrivez sur votre GoBack(), le cours de l'application se bloque.

    C'est pour cela que si vous désactiver votre code puis testez par exemple ligne par ligne, a un moment vous trouverez la/lignes de codes qui ont l'air de poser problème, et donc de déterminer ce qui poserait problème.

    Cordialement,


    Yan Grenier

    vendredi 30 janvier 2015 13:31
  • Bonjour, 

    c'était bien un probléme asynchrone dût à des méthodes static


    Florian R SAS

    lundi 23 mars 2015 13:16
  • Bonjour,

    Je l'avais dis, un grand classique :)


    Yan Grenier

    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont répondues à votre question, et de noter les réponses que vous avez trouvé utiles.

    lundi 23 mars 2015 13:22