Bonjour,

j'ai une classe "démon", qui réalise un traitement et je veux attendre que celui-ci se termine avant de passer à la suite car je souhaite récupérer son résultat...

Le problème c'est que lorsque je réalise se traitement, mon application reste figée également et je ne peux rien faire en parallèle.

Ma question étant donc, comment je peux attendre la fin du traitement tout en ayant la possibilité de pouvoir naviguer dans mon application?

Admettons le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
gps = new GpsDecoder.GpsDecoder();
gps.Open();
 
pos = gps.GetValidPosition((int)new TimeSpan(0, 5, 0).TotalMilliseconds);
Fonction bête et méchante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public ValidGpsPosition GetValidPosition (int timeout)
        {
            int it = 0;
            while ((!position.IsValid) && it < timeout)
            {
                Thread.Sleep(1000);
                it += 1000;
            }
 
            if(it >= timeout)
            {
                throw new TimeoutException("Timeout levé");
            }
 
            return position;
        }
Une idée de comment Threader la chose tout en ayant le contrôle et que l'ordre d'éxecution soit respecté?