HOSSEINONLINE7
پنج شنبه 31 مرداد 1392, 18:34 عصر
سلام من برای نمایش میزان کپی فایلها از بگراند ورکر و پروگرس بار استفاده کردم ولی کار نمیکنه و موقع کپی اطلاعات فقط فرم هنگ میکنه و اطلاعات کپی میشه و درصد کپی شدن را توی پرگرس بار نمایش نمیده ...
کدش را طوری نوشتم که در هر لحظه سایز فولدر مقصد که داره توش کپی میشه دریافت و برای تغییر مقدار پروگرس بار ارسال میشه .
راهنمایی بفرمایید :
private void backgroundWorker1_DoWork(DirectoryInfo source, DirectoryInfo destination)
{
if (!destination.Exists)
{
destination.Create();
}
// Copy all files.
FileInfo[] files = source.GetFiles();
foreach (FileInfo file in files)
{
file.CopyTo(Path.Combine(destination.FullName,
file.Name));
}
// Process subdirectories.
DirectoryInfo[] dirs = source.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
// Get destination directory.
string destinationDir = Path.Combine(destination.FullName, dir.Name);
// --------------------------------Get and Send Destination Size-----------------------
string[] dsize = System.IO.Directory.GetDirectories(@"d:\a", "*", (System.IO.SearchOption.AllDirectories));
backgroundWorker1.ReportProgress(dsize.Length);
// ------------------------------------------------------------------------------------
// Call CopyDirectory() recursively.
CopyDirectory(dir, new DirectoryInfo(destinationDir));
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pb1.Value = e.ProgressPercentage ;
}
توی دکمه ایی هم که قراره با زدن اون عملیات کپی انجام بشه قطعه کد مربوطه به این شکل هست :
CopyDirectory(src, dest);
backgroundWorker1.RunWorkerAsync();
تشکر:قلب:
کدش را طوری نوشتم که در هر لحظه سایز فولدر مقصد که داره توش کپی میشه دریافت و برای تغییر مقدار پروگرس بار ارسال میشه .
راهنمایی بفرمایید :
private void backgroundWorker1_DoWork(DirectoryInfo source, DirectoryInfo destination)
{
if (!destination.Exists)
{
destination.Create();
}
// Copy all files.
FileInfo[] files = source.GetFiles();
foreach (FileInfo file in files)
{
file.CopyTo(Path.Combine(destination.FullName,
file.Name));
}
// Process subdirectories.
DirectoryInfo[] dirs = source.GetDirectories();
foreach (DirectoryInfo dir in dirs)
{
// Get destination directory.
string destinationDir = Path.Combine(destination.FullName, dir.Name);
// --------------------------------Get and Send Destination Size-----------------------
string[] dsize = System.IO.Directory.GetDirectories(@"d:\a", "*", (System.IO.SearchOption.AllDirectories));
backgroundWorker1.ReportProgress(dsize.Length);
// ------------------------------------------------------------------------------------
// Call CopyDirectory() recursively.
CopyDirectory(dir, new DirectoryInfo(destinationDir));
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pb1.Value = e.ProgressPercentage ;
}
توی دکمه ایی هم که قراره با زدن اون عملیات کپی انجام بشه قطعه کد مربوطه به این شکل هست :
CopyDirectory(src, dest);
backgroundWorker1.RunWorkerAsync();
تشکر:قلب: