Temps de copie

cpetter Messages postés 38 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 4 octobre 2007 - 13 févr. 2005 à 18:27
cpetter Messages postés 38 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 4 octobre 2007 - 15 févr. 2005 à 11:57
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 févr. 2005 à 18:48
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#
0
cpetter Messages postés 38 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
13 févr. 2005 à 18:52
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!
0
cpetter Messages postés 38 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
15 févr. 2005 à 11:31
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!!
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 févr. 2005 à 11:39
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#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cpetter Messages postés 38 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
15 févr. 2005 à 11:47
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 ?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 févr. 2005 à 11:55
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#
0
cpetter Messages postés 38 Date d'inscription vendredi 7 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
15 févr. 2005 à 11:57
Ok Merci



Je vais voir ce que je peux faire!!



Merci pour tout
0
Rejoignez-nous