J'ai lu tant d'articles et d'autres questions sur ce sujet, mais parce que je suis très nouveau à C# et travailler avec des discussions en général, les réponses étaient malheureusement trop compliquées pour moi et mon problème.Mettre à jour la barre de progression dans un autre fil
J'ai cette barre de progression qui sera remplie avec de très petits pas, généralement 0,03%. En incluant ceci normalement, il est passé de 0 à 100 dans un instand à la fin de l'opération, mais je l'ai parcouru à chaque fois et je le mets à jour à raison de 0,03% à chaque fois. Je crois que la mise à jour de la barre de progression dans un autre thread fera l'affaire, mais malheureusement je n'ai aucune compréhension de ce sujet à ce jour.
C'est la section de code où ma barre de progression sera mise à jour:
public void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
string source4count = source.ToString();
if (checkSubdirCase == 0)
{
allfiles = System.IO.Directory.GetFiles(source4count, "*.*", System.IO.SearchOption.AllDirectories);
allFilesNum = allfiles.Length;
progressbarinterval = 0;
progressbarinterval = 100/allFilesNum;
Progressbarvalue = 0;
}
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
foreach (FileInfo fi in source.GetFiles())
{
//HERE IS THE UPDATING OF THE PROGRESSBAR
fi.CopyTo(System.IO.Path.Combine(target.ToString(), fi.Name), true);
Progressbarvalue = Progressbarvalue + progressbarinterval;
ProgressBarCopy.Value = Progressbarvalue;
}
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
checkSubdirCase = 1;
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
J'espère que someeone peut me aider et expliquer de façon simple comment aborder ce sujet et comment les travailleurs de fond fonctionnent réellement. Cordialement
Merci pour cette réponse. C'était facilement compréhensible et je vais l'essayer maintenant. :) – MansNotHot