Temps de copie

Signaler
Messages postés
38
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007
-
Messages postés
38
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007
-
Bonsoir



Je viens de créer une divxothèque et lors de la copie j'utilise 2 threads :

1 pour la copie

et 1 pour l'affichage d'une progressbar.



Pour la copie c bon, et la progressbar avance correctement, mais je ne
vois pas comment faire pour savoir la vitesse de copie, le temps
restant, ... afin de modeler la progressbar en fct de la copie!!



Je vous met le code important



private void CopyThreads()

{

progressBar1.Visible = true;

ThreadCopy = new System.Threading.Thread(new

System.Threading.ThreadStart(this.Copy_entries));

ThreadCopy.Start();

ThreadProgress = new System.Threading.Thread(new

System.Threading.ThreadStart(this.ProgressBar));

ThreadProgress.Start();

}

private void ProgressBar()

{

time.Enabled = true;

time.Elapsed += new System.Timers.ElapsedEventHandler(IncreaseProgressBar);

time.Start();

}

private void IncreaseProgressBar(object sender, System.Timers.ElapsedEventArgs e)

{

progressBar1.Increment(1);

this.Text = progressBar1.Value.ToString() + "% Completed";

if (progressBar1.Value == progressBar1.Maximum)

time.Stop();

}

}

private void Copy_entries()

{

File.Copy(path1, path2, true);

}

7 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Ba déjà je voudrais bien savoir comment tu fais pour avoir le pourcentage exact de la copie du fichier alors que tu utilises File.Copy
Quitte a laisser win gérer la copie, jette un coup d'oeil à ça : http://www.codeproject.com/csharp/IProgressDialogNET.asp :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
38
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007

Justement, je ne voyait pas non plus!!



c pour ca que g fait ce post!!



Merci pour le lien!!

je vais voir ce que j'arrive à faire avec!
Messages postés
38
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007

Ok super cool cet dll!!

ca permet pas grand chose!!

a part afficher une fenêtre de copie, qui calcule n'importe koi!!

Voilà le code fournit!!

private uint DoCalc() {
// pretend to do some calc
System.Threading.Thread.Sleep( 2000 );
// get some biggish number
Random rand = new Random();
return (uint)rand.Next( 150, 500 );
}


Pas très utile. Il me faudrait quelque chose de précis!

Qui calcule vraiment le temps restant!!



Ou alors je n'ai pas tout compris!!
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Hum je crois que j'ai confondu avec la demande de copie avec affichage de la boite de progression (comme avec un c/c dans l'explorer), apparemment là c'est juste pour afficher la boite...

Sinon le principe en gros est de regarder ponctuellement (avec une frequence sup ou égale a 1 seconde) :
- volume copié
- temps ecoulé depuis le debut de la copie
Connaissant le volume total tu peux determiner la vitesse moyenne et donc estimer le temps restant.
Mais pour ça tu dois copier ton fichier "à la main", pas avec File.Copy

Une autre solution serait d'utiliser SHFileOperation.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
38
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007

En gros il faudrait copier le fichier octet par octet. A chaque
secondes ou autre temps de check je recalcule le temps restant en fct
du temps de copie et le nb d'octets déjà copie ?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
euh non pas octet par octet sinon tu vas avoir des perfs desastreuses.
Le mieux je pense est de faire baisser/augmenter la taille du buffer afin d'obtenir une lecture/copie en une seconde, mais je ne suis pas sur que ce soit ce qu'il y a de mieux.
Essaie de trouver plus d'infos là dessus.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
38
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007

Ok Merci



Je vais voir ce que je peux faire!!



Merci pour tout