.NET 2.x Общее копирование файлов backgroundWorker1 - C#

Узнай цену своей работы

Формулировка задачи:

Вот та код Вывести прогресс скопированных файлов
Листинг программы
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. backgroundWorker1.RunWorkerAsync();
  4. for (int i=0; i<10; i++)
  5. {
  6. Copy_Dowork(@"C:\Video_"+i+".avi",@"D:\Video_"+i+".avi");
  7. }
  8. }
  9.  
  10. private void CopyFiles(string file_old, string file_new)
  11. {
  12. File.Copy(file_old,file_new,true);
  13. }
  14. public void Copy_Dowork(string old_f,string new_f)
  15. {
  16. old_put = old_f;
  17. new_put = new_f;
  18. }
  19. public string old_put { get; set; }
  20. public string new_put { get; set; }
  21. private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  22. {
  23. CopyFiles(old_put,new_put);
  24. }
  25. private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
  26. {
  27. progressBar1.Value = e.ProgressPercentage;
  28. label1.Text = "Прогресс: " + e.ProgressPercentage + " %";
  29. }
  30. private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  31. {
  32. if (e.Cancelled == true)
  33. {
  34. MessageBox.Show("ОТМЕНА!", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  35. }
  36. else if (e.Error != null)
  37. {
  38. MessageBox.Show(e.Error.Message, "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error);
  39. //resultLabel.Text = "Error: " + e.Error.Message;
  40. }
  41. /*else
  42. {
  43. MessageBox.Show("Упаковано", "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Information);
  44. //resultLabel.Text = "Done!";
  45. }*/
  46. }
Не работает пишет backgroundWorker1 занят

Решение задачи: «.NET 2.x Общее копирование файлов backgroundWorker1»

textual
Листинг программы
  1. public void CreateParts(string pathBaseFolder, string pathParts, string name_part, int partCount, string copy_move)
  2.         {
  3.             long files_all_size = 0;
  4.             long folder_size_part = 0;
  5.             string dir_file_path = "";
  6.             long size_files_all = 0; // весь размер файлов
  7.             int size_value = 0;
  8.             //progressBar1.Minimum = 0;
  9.             //progressBar1.Maximum = N_brower_files;
  10.             //progressBar1.Step = 1;
  11.             //long Mbyte_files_all_size = 0;
  12.             //long Mbyte_folder_size_part = 0;
  13.  
  14.             files = new List<FileItem>();
  15.  
  16.             //progressBar1.Maximum = size_files_all;
  17.             //backgroundWorker1.ReportProgress(size_files_all);
  18.  
  19.             string[] folderName = new string[partCount]; //стрковый масив, число в строки разбил
  20.             FileSearch(pathBaseFolder);// размещаем в files все файлы из каталога
  21.  
  22.             files = files.OrderByDescending(f => f.Size).ToList(); // сортируем эти файлы по размеру
  23.  
  24.             for (int i = 0; i < files.Count; i++)
  25.             {
  26.                 size_files_all += files[i].Size; // Когда отсортированы по размеру , файлы добавляються в List
  27.                 // Тогда можно получить общий размер
  28.             }
  29.             progressBar1.Maximum = (int)size_files_all;
  30.  
  31.             // условие если папки нету part то создавать
  32.             if (!Directory.Exists(pathParts)) Directory.CreateDirectory(pathParts);
  33.             for (int i = 0; i < partCount; i++)// создаем папки 5
  34.             {
  35.                 // записываем строковый масив part1 part2......5
  36.                 folderName[i] = pathParts + @"\" + name_part + (i + 1).ToString();
  37.                 //folderName[i] = RemoveSpaces(folderName[i]);
  38.                 // создаем папки
  39.                 Directory.CreateDirectory(pathParts + @"\" + name_part + (i + 1).ToString());
  40.  
  41.             }
  42.  
  43.             var folders = new long[partCount];
  44.             // далее, попробуй составить алгоритм разбиения  списка файлов на части с сохранением в part1...5
  45.             switch (copy_move)
  46.             {
  47.                 case mass_cop:
  48.  
  49.                     // сортируем по размеру
  50.                     foreach (var f in files.OrderByDescending(f => f.Size))
  51.                     {
  52.                         var i = FindMinFolder(folders);
  53.                         f.TargetFolder = i;
  54.                         folders[i] += f.Size;
  55.                         size_value += (int)f.Size;
  56.                         try
  57.                         {
  58.                             dir_file_path = f.Dir.Replace(pathBaseFolder, "");
  59.  
  60.                             if (String.IsNullOrEmpty(folderName[i]))
  61.                             {
  62.                                 Directory.CreateDirectory(pathParts + @"\" + name_part + "1" + dir_file_path);
  63.                                 //Copy_Files_ProgressBar(f.Path,pathParts + @"\" + name_part + "1" + dir_file_path + @"\" +Path.GetFileName(f.Path));
  64.                                 //backgroundWorker1.RunWorkerAsync();
  65.                  
  66.                                 Copy_progress(f.Path, pathParts + @"\" + name_part + "1" + dir_file_path + @"\" + Path.GetFileName(f.Path));
  67.                                 progressBar1.Value = size_value ;
  68.                                 //MessageBox.Show(size_value + "\n" + (int)size_files_all + "\n\nBAR\n" + progressBar1.Value + "\n" + progressBar1.Maximum);
  69.                                 /////////progressBar1//////////
  70.                                
  71.                                 //label3.Text = "Прогресс: " + (folders[i] * 100) / size_files_all + " %";
  72.                                 //progressBar1.Value = (int)folders[i] / (int)size_files_all;
  73.                                 //MessageBox.Show(progressBar1.Value + "\n" + progressBar1.Maximum + "\n" + (folders[i] * 100) / size_files_all + "%");
  74.                                 /*if (File.Exists(pathParts + @"\" + name_part + "1" + dir_file_path + @"\" + Path.GetFileName(f.Path)))
  75.                                 {
  76.                                        
  77.                                     progressBar1.PerformStep();
  78.  
  79.                                 }*/
  80.                                 /////////progressBar1//////////
  81.                             }
  82.                             else
  83.                             {
  84.                                 Directory.CreateDirectory(folderName[i] + @"\" + dir_file_path);
  85.                                 //Copy_Files_ProgressBar(f.Path, folderName[i] + dir_file_path + @"\" + Path.GetFileName(f.Path));
  86.                                 //backgroundWorker1.RunWorkerAsync();
  87.                                
  88.                                 Copy_progress(f.Path, folderName[i] + dir_file_path + @"\" + Path.GetFileName(f.Path));
  89.                                
  90.                                 /////////progressBar1//////////
  91.                                 progressBar1.Value = size_value;
  92.                                 //MessageBox.Show(size_value + "\n" + (int)size_files_all + "\n\nBAR\n" + progressBar1.Value + "\n" + progressBar1.Maximum);
  93.                                 //MessageBox.Show(size_value + "\n" + size_files_all);
  94.                                 //progressBar1.Value = 50;
  95.                                 //label3.Text = "Прогресс: " + (folders[i] * 100) / size_files_all + " %";
  96.                                 //progressBar1.Value = (int)folders[i] / (int)size_files_all;
  97.                                 //MessageBox.Show(progressBar1.Value + "\n" + progressBar1.Maximum + "\n" + (folders[i] * 100) / size_files_all + "%");
  98.                                 /*if (File.Exists(folderName[i] + dir_file_path + @"\" + Path.GetFileName(f.Path)))
  99.                                 {
  100.  
  101.                                     progressBar1.PerformStep();
  102.  
  103.                                 }*/
  104.                                 /////////progressBar1//////////
  105.                             }
  106.                         }
  107.                         catch (Exception ex)
  108.                         {
  109.  
  110.                             MessageBox.Show(ex.Message, "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error);
  111.                         }
  112.  
  113.                     }
  114.  
  115.                     //if (progressBar1.Value == progressBar1.Maximum)
  116.                     //{
  117.                         MessageBox.Show("Распределение закончино!", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
  118.                         progressBar1.Value = 0;
  119.                     //}
  120.  
  121.                     break;
  122.                 case mass_mov:
  123.                     break;
  124.                 default:
  125.                     MessageBox.Show("Не верно: " + copy_move, "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error);
  126.                     break;
  127.             }
  128.  
  129.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.7 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы