このトピックに関する多くの記事やその他の質問を読んだことがありますが、C#の初心者で一般的なスレッドを扱っているので、回答は悲しいことにほとんど私にとっては複雑で、私の問題。別のスレッドの進行状況バーを更新する
私は、ほとんど0.03%の非常に小さなステップで満たされるこのプログレスバーを持っています。これを普通に含めると、毎回実行され、毎回0.03%のステップで更新されます。私は、別のスレッドで進捗バーを更新することは、トリックを行うだろうと信じていますが、私は悲しいことに、このトピックを理解することができます。
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);
}
}
私はsomeeoneが私を助け、これに対処するための方法および背景の労働者が実際にどのように機能するかを簡単に説明することを願って:
この
は私のプログレスバーが更新されるコードセクションです。 よろしく
この回答はありがとうございます。それは容易に理解でき、私は今それを試してみるでしょう。 :) – MansNotHot