Moomoon07
Messages postés223Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 5 mai 2014
-
24 août 2006 à 17:34
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
26 août 2006 à 14:32
salut !
Je suis toujours en galère avec les threads !
Voici un morceau de mon code.
J'aimerais pouvoir executer "génération" dans un thread.
Je n'arrive pas à glisser le paramètre dans mon appel de fonction, ThreadPool.QueueUserWorkItem(newWaitCallback(Génération))
ne veut que le nom de la fonction en param.
DialogResult d =
MessageBox.Show(
"Un dossier contenant les playlists et les titres MP3 de la charte va être créé\nCe dossier s'appellera :\n" + CF.getCheminPlaylists() + NomRep +
"\n(Les doublons seront écrasés)\nVoulez vous continuer ?",
"Génération de la charte",
MessageBoxButtons.YesNo);
if (d ==
DialogResult.Yes)
ThreadPool.QueueUserWorkItem(
new
WaitCallback(Génération));
}
private
void Génération(
string NomRep,
object state)
{
i
f (!
Directory.Exists(CF.getCheminPlaylists() + NomRep))
{
DialogResult d =
MessageBox.Show(
"Un dossier contenant les playlists et les titres MP3 de la charte va être créé\nCe dossier s'appellera :\n" + CF.getCheminPlaylists() + NomRep +
"\n(Les doublons seront écrasés)\nVoulez vous continuer ?",
"Génération de la charte",
MessageBoxButtons.YesNo);
if (d ==
DialogResult.Yes)
if (!
Directory.Exists(CF.getCheminPlaylists() + NomRep))
{
StreamWriter Rapport =
new
StreamWriter(CF.getCheminPlaylists() + NomRep +
"/Rapport.txt",
false,
ASCIIEncoding.Default);CreerPlaylists(CF.getCheminPlaylists() + NomRep, Rapport);
Rapport.Close();
}
else MessageBox.Show(
"Ce dossier existe déja, la charte ne peut être générée");
}
}
J'ai lu un truc sur le synchrone et l'asynchrone, mais jai rien compris. Est ce que vous pouriez me donner un petit exemple d'appel de foction avec paramètre par un thread ?
leprov
Messages postés1160Date d'inscriptionvendredi 23 juillet 2004StatutMembreDernière intervention21 octobre 201017 24 août 2006 à 19:51
je ne connais pas l'objet threadpool, mais pourquoi ne pas utiliser un objet thread tout simplement? cela ne permet pas de passage de paramètres et il te faudra alors trouver une solution....celle que j'utilise généralement ressemble un peu a ca :
public class class1
{
public class classthread
{
public int arg1;
public string arg2;
public void MaMethodeThreadéeQuiABesoinDarguments()
{
}
}
je sais pas si ce code fonctionne correctement (déjà) car j'ai ptetre fait qqs erreurs.
de plus, je sais pas si ca répond correctement a ton besoin (en tous cas j'espere)
Moomoon07
Messages postés223Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention 5 mai 2014 25 août 2006 à 17:36
OK ... merci pour votre aide, je vais regarder d'un peu plus prêt vos idées.
Bidou> Pourquoi me dis tu qu'il faut arréter les concaténations multiples avec des + ?
Ca bouffe de la ram ? Je ne comprends pas, moi je trouve ça très pratique.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 25 août 2006 à 20:24
Salut,
Une string etant immutable, chaque concatenation implique l'instanciation d'une nouvelle string -> procédure très lourde, surtout pour de grosses boucles.
Il vaut bien mieux utiliser la classe StringBuilder et sa méthode Append.