ProgressBar问题:将文件夹复制到目标更新

本文关键字:目标 更新 复制 文件夹 问题 ProgressBar | 更新日期: 2023-09-27 18:26:13

下面是为应用程序的导入功能复制目录的代码,我想相应地更新进度条和标签。我刚刚读到关于背景工作者的文章,它也适合这个特殊的案例。这是代码:

private void importToolStripMenuItem_Click(object sender, EventArgs e)
    {
        lbProcessFiles.Visible = false;
        pbProcessFiles.Visible = false;
        DialogResult result = folderBrowserDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            string sourcePath = folderBrowserDialog1.SelectedPath;
            string destinationPath = @"Logs''";
            //Now Create all of the directories
            foreach (string dirPath in Directory.GetDirectories(sourcePath, "*", SearchOption.AllDirectories))
            {
                lbProcessFiles.Visible = true;
                lbProcessFiles.Text = "Copying Directories";
                pbProcessFiles.Value = 0;
                pbProcessFiles.Maximum = dirPath.Length;
                Directory.CreateDirectory(dirPath.Replace(sourcePath, destinationPath));
                pbProcessFiles.PerformStep();
            }
            lbProcessFiles.Text = "Now Copying Files";
            //Copy all the files
            foreach (string newPath in Directory.GetFiles(sourcePath, "*.*", SearchOption.AllDirectories))
            {
                pbProcessFiles.Value = 0;
                pbProcessFiles.Maximum = newPath.Length;
                lbProcessFiles.Text = "Copying Files";
                File.Copy(newPath, newPath.Replace(sourcePath, destinationPath));
                pbProcessFiles.PerformStep();
            }                    
        }
        lbProcessFiles.Text = " Import Complete";
    }

ProgressBar问题:将文件夹复制到目标更新

您在foreach的每次迭代中将progressbar的值设置为零。将pbProcessFiles.Value = 0;从foreach语句中移出。。。