Bonjour à tous,
J'ai un problème de mise en place de la synchronisation de mes threads. Auparavant j'avais des fonctions qui s'exécutaient à la chaîne dans le thread principal, ou thread graphique. Cela figeait l'interface.
Maintenant j'ai passé une fonction de chargement de fichiers (LoadFile) dans un thread afin d'afficher des informations lors du chargement (étape en cours...).
Le problème est que les fonctions qui s'exécutent après "LoadFile" manipulent des objets créés par cette même fonction. Il me faut donc mettre en pause ma tâche principale pour attendre que la fonction se termine.
Le problème est que ma fonction LoadFile fait des mises à jour graphiques, l'interface graphique se trouvant dans la même classe que LoadFile(et pas dans le main mais j'ai voulu simplifier...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Main(..) { ... Thread loadingThread = new Thread (ParametrizedStartParameterizedThreadStart(LoadFile)) loadingThread.Start(filePath); //Là où il faudrait faire une pause //myWaitHandle.WaitOne(); ... //Fonctions qui utilisent les objets créés par LoadFile }
J'ai essayé de faire une pause avec une WaitHandle, dont je passe le Set() à la fin de LoadFile, mais je ne sais pas pourquoi, tout se met en pause !
Le thread principal étant en pause, je pense que mes appels au Dispatcher pour faire les mises à jour graphiques sont vains, car il est en pause...
Comment pourrais-je faire pour que mon thread principal attende la fin de LoadFile avant de continuer, tout en restant disponible pour effectuer des mises à jour graphiques, et sans tout bloquer?
Vraiment merci d'avance
Partager