racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 9 nov. 2006 à 22:42
Voici un exemple de ce que tu peux faire:
// Définition en global de la structure contenant les chemins:
struct Chemins{
char source[MAX_PATH];
char destination[MAX_PATH];
};
// Fonction du thread:
DWORD ThreadFunction( LPVOID params)
{
Chemins* paths=(Chemins*)params;
CopyFile(paths->source, paths->destination, 0);
return 0;
}
Dans la fonction appelant le thread tu fais par exemple juste après le clic d'un bouton:
Chemins chem; // à déclarer en static
lstrcpy (chem.source, "C:\\monfichier.txt");
lstrcpy (chem.destination, "D:\\copiedemonfichier.txt");
CreateThread(0,0,ThreadFunction,(LPVOID)&Chemins,0 ,0);
// suite de ton code....
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 9 nov. 2006 à 21:01
Salut,
Tu peux utiliser CopyFile() dans un thread. Ce dernier assurera la copie du fichier sans bloquer l'application. Tous les paramètres seront passés au thread dans une structure.
gege1024
Messages postés138Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention27 janvier 2009 9 nov. 2006 à 21:09
ok, je vois bien la solution mais le hic c'est que je vais devoir passer un bon moment pour comprendre le multi-thread !!!!
on peut faire simple en qq lignes?
gege1024
Messages postés138Date d'inscriptionvendredi 10 janvier 2003StatutMembreDernière intervention27 janvier 2009 9 nov. 2006 à 21:13
precision, j'ai fais il y a qq temps un programme avec mise a jour auto (verification sur un serveur http d'une nouvelle version)
et pour faire les telechargement , j'avais fais un 2ieme prog (celui qui telecharge) lancer par le premier.
--> en fait , je peux faire ceci dans le meme prog (multi-thread) ???
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 9 nov. 2006 à 21:24
Bien sur, c'est ça l'utilité du multi-threading. Tout se fait dans le
même processus de ton application. La fonction du thread sera exécutée
sans bloquer le programme. Le multi-threading est indispensable dans
beaucoup de cas. Et ce n'est pas compliqué car une seule fonction
de quelques lignes suffira pour ton thread.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 10 nov. 2006 à 21:49
SAKingdom >> CopyFile() se charge de tout. Il suffit de lui soumettre les chemins source et destination en plus d'un dernier paramètre autorisant ou non l'écrasement du fichier destination s'il existe déjà. Aucun besoin de CloseHandle().
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 10 nov. 2006 à 22:54
Ah ok. Je pensais au handle du fichier à copier.
Pour le thread je voulais donner un exemple très simple. Effectivement, si on n'appelle pas CloseHandle() l'objet thread ne sera pas libéré du système. C'est plutôt un exemple à but pédagogique. Il devra ensuite chercher à comprendre toutes les subtilités que l'utilisation des threads entraine.
Merci pour la remarque.