none
Un fichier inaccessible à la première génération de l'application RRS feed

  • Question

  • Bonjour,

    Je rencontre actuellement un problème avec ce code, appelé avant le lancement de la MainPage de mon application

    string FilePath = @"ms-appx:///Assets/";
    string FileName = "Citations.xml";
    
    System.Xml.Linq.XDocument xmlData = new System.Xml.Linq.XDocument();
                
    try
    {
      StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(string.Concat(FilePath, FileName)));
                    
      //POINT INACCESSIBLE
      using (var stream = await file.OpenStreamForReadAsync())
      {
        xmlData = System.Xml.Linq.XDocument.Load(stream);
      }
    }
    catch (Exception ec)
    {
      Debug.WriteLine(ec.Message);
    }


    Comme vous le voyez, il s'agit du chargement d'un fichier XML contenant des données propre au contenu de l'application.

    Malheureusement, le code n'atteint pas le "POINT INACCESSIBLE" mais ne passe pas non plus dans le catch. Toutefois, le reste de la méthode dans laquelle se trouve ce code est tout bonnement ignoré et l'application poursuit ses instructions jusqu'à celle qui suit l'appel de cette méthode et là me renvoit une erreur (du type, " Object not initialized " - car la méthode abandonné n'initialise du coup pas un objet utilisé plus tard).

    Par contre, lors des autres génération de l'application, tout se passe bien.

    Quelqu'un saurait pourquoi ?

    D'avance, merci à ceux qui voudront bien se pencher sur ce problème.

    O4D

    • Modifié O4D mercredi 5 novembre 2014 21:54
    mercredi 5 novembre 2014 21:12

Réponses

  • Bonjour,

    Etes-vous sur qu'il passe dans cette méthode tout court parce que cela semble étrange.

    Un point important pour tout dev, n'oubliez pas de créer des logs. Car en plus sous WinRT, avec les appels COM et les await/async, on peut parfois avoir du mal à déboguer dans VS. Un bon vieux log résout ces pbs.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse O4D jeudi 6 novembre 2014 14:07
    jeudi 6 novembre 2014 10:06

Toutes les réponses

  • Bonjour,

    Etes-vous sur qu'il passe dans cette méthode tout court parce que cela semble étrange.

    Un point important pour tout dev, n'oubliez pas de créer des logs. Car en plus sous WinRT, avec les appels COM et les await/async, on peut parfois avoir du mal à déboguer dans VS. Un bon vieux log résout ces pbs.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    • Marqué comme réponse O4D jeudi 6 novembre 2014 14:07
    jeudi 6 novembre 2014 10:06
  • En effet, le code ne pouvait tout simplement pas atteindre la suite de la méthode.

    N'ayant encore pas bien l'habitude des instructions "async"/"await", j'ai en effet omis d'envisager que le chargement puisse ne pas avoir le temps de se faire avant que les autres instructions s’enchaînent.

    J'ai donc reporté l'appel de la suite des instruction que dans le cas où le document était chargé.

    Je m'en vais me redocumenter sur Await/Async aussi et jeter un coup d'oeil sur l'utilisation de Log :)

    Merci à vous !


    jeudi 6 novembre 2014 14:12