cpetter
Messages postés38Date d'inscriptionvendredi 7 mai 2004StatutMembreDernière intervention 4 octobre 2007
-
13 févr. 2005 à 18:27
cpetter
Messages postés38Date d'inscriptionvendredi 7 mai 2004StatutMembreDerniè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);
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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 :-)
cpetter
Messages postés38Date d'inscriptionvendredi 7 mai 2004StatutMembreDerniè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!
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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
cpetter
Messages postés38Date d'inscriptionvendredi 7 mai 2004StatutMembreDerniè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 ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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.