programme s'arrête dès qu'il arrive à 'await'

a marqué ce sujet comme résolu.

Bonjour,

mon code c# s’arrête après le 1er 'away' et n’arrive pas à //blabla2, avez vous une idée ?

public static async Task start(bool concatOldValue){
// blabla1
List<Task<bool>> bb = new List<Task<bool>> { Task.Factory.StartNew<bool>(dataP6xmlNEW.LireFichier),
                Task.Factory.StartNew<bool>(dataP6xmlOLD.LireFichier) };

            await Task.WhenAll(bb);
//blabla2
}

merci

+0 -0

Salut,

Que veux-tu dire par « le code s’arrête après le await », qu’il bloque à ce niveau-là ?

await (et non away) est un mot-clé qui permet d’attendre la fin de l’exécution d’une tâche. Donc il est fort probable que ton code soit bloqué en attente de celle-ci, peut-être qu’il y a une boucle infinie ou un problème de synchronisation dans cette tâche ?

(je te conseille de démasquer le post pour qu’on y voit plus clair)

En mode debug, le code s’arrete sur la ligne du await, il ne va pas plus loin, et on sort du debug

public static async Task start(bool concatOldValue){
// blabla1
List<Task<bool>> bb = new List<Task<bool>> { Task.Factory.StartNew<bool>(dataP6xmlNEW.LireFichier),
                Task.Factory.StartNew<bool>(dataP6xmlOLD.LireFichier) };

            await Task.WhenAll(bb);
//blabla2
}

(Désolé, je voulais suprimer le message à cause du doublon et je n’ai rien trouver d’autre que masquer)

2 Petites précisions : 1/ ma méthode Main() est précédé de l’attribut :

[STAThread]
   static void Main()
{//blablablabla}

et ma méthode 'start(bool concatOldValue)' est lancer depuis une class qui hérite de la class System.Windows.Forms

2/ dans la fenêtre 'Sortie' de Visual Studio, j’ai le message suivant après la ligne await… :

Le thread 0x2dc s'est arrêté avec le code 0 (0x0).
Le thread 0x3d64 s'est arrêté avec le code 0 (0x0).
Le programme '[8596] blabla.vshost.exe' s'est arrêté avec le code 0 (0x0).
+0 -0

@dédé974 j’ai démasqué le poste initial pour rendre la discussion plus lisible…

Peux-tu nous mettre un peu de contexte avant et après ton appel aux tâches, c’est peut être ça qui génère un bug.

Le code 0x0 signifie que le programme s’est terminé normallement et sans erreur.

Tu peux donner un peu de code s’il te plait?

artragis
public class CreateExcelWorksheet
{
      [STAThread]
    static void Main()
    {
            string info = "";
            Accueil ea = new Accueil(info);
    }
}
//
 public partial class Accueil : Form
    {
        public Accueil(string version)
        {
            InitializeComponent();
            this.label1.Text = version;
            this.ShowDialog();
        }
      private void button2_Click(object sender, EventArgs e)
        {
            Modification.start(true);
            this.Close();
        }
    }
}
//
 public static class Modification
    {
  public static async Task start(bool concatOldValue){
// blabla1
List<Task<bool>> bb = new List<Task<bool>> { Task.Factory.StartNew<bool>(dataP6xmlNEW.LireFichier),
                Task.Factory.StartNew<bool>(dataP6xmlOLD.LireFichier) };

            await Task.WhenAll(bb);
//blabla2
}}
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte