greg76301
Messages postés14Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention15 avril 2006
-
24 févr. 2006 à 11:22
greg76301
Messages postés14Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention15 avril 2006
-
6 mars 2006 à 11:36
bonjour ,
je developpe un media player et lors du chargement de la playlist j'ai
souahité utiliser un thread car selon la taille de la playlist le
programme se fige au chargementde la playlist.
Le probleme c'est que meme avc un thread le programme ne repon tjs pas lors du chargement de la playlist.
Je recupere FileNames de l'openfiledialog et lance mon thread qui
charge une datagridview avc les noms de fichier, les durée, le chemin...
....
if (OpenFileDialog.ShowDialog() == DialogResult.OK)
{
list_fic = OpenFileDialog.FileNames;
thread_load = new Thread( new ThreadStart(load_playlist));
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 24 févr. 2006 à 11:34
Salut,
Sans aller jusque dire que le probleme vient de la, tu as deja un souci de cross-threading.
Car tu modifies des propriétés d'objets qu'un thread a créé, depuis un autre thread. Et ca, c'est pas safe. (a savoir dans ton cas, ta progressbar et ton datagridview)
Pour resoudre ce probleme, il te faut utiliser des appels asynchrones. Je t'invite a lire ce tutorial (a force on va croire que je fais de la pub ) et aussi cet article sur la msdn.
Autrement, tu devrais mettre la propriété IsBackground de ton Thread a true;
Et finalement, pourquoi utiliser un foreach dans lequel tu incrementes un int a chaque fichier. Autant utiliser une boucle for a ce moment la ;)
greg76301
Messages postés14Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention15 avril 2006 24 févr. 2006 à 18:11
merci de ta reponse
Je ne pense pas non plus que le souci vienne du cross-threading ms ds
un souci de propreté jv modifier mon code en suivant ton tutorial.
J'avais utilisé jusqu'a l'heure :
Control.CheckForIllegalCrossThreadCalls = false;
g essayer de mettre IsBackground a true sans succes ..
quand a la boucle j'ai modifié et ca venait de la :-s
greg76301
Messages postés14Date d'inscriptionmardi 19 juillet 2005StatutMembreDernière intervention15 avril 2006 6 mars 2006 à 11:36
En fait visiblement le probleme ne viens pas de là, j'ai supprimé le
thread pour tester et meme la petite form que g crée
composé d une progressbar et de 3 label ne s'affiche pas correctement.
il faut attendre la fin du traitement de la playlist pour afficher
correctement cette derniere, c 'est donc ridicule etant donnée que
c'est cette form qui donne l'etat d'avancement de la playlist.
Quelqu'un saurait-il comment est programmer de maniere a ce que le
rafraichissement de laffichage du programme se fasse correctement.
Dans le Windows media player , lorsque l 'on recherche des
fichier ds le pc pour les ajouter a la bibliotheque une fenetre avc une
barre de progression s'affiche avec des données de l'avancement de la
recherche sans que cela s'affiche mal. Quelqu'un saurait il comment
c'est fait?
Merci d'avance.
Je vous joins une image illustrant le bug daffichage de ma form: