ExecutionEngineException - PullRequest
       26

ExecutionEngineException

0 голосов
/ 05 июня 2011
   private void CopyAllFilesToButton_Click_1(object sender, EventArgs e)
    {
        folderBrowserDialog1.ShowDialog();

        foreach (var item in files)
        {
                File.Copy(item, folderBrowserDialog1.SelectedPath);
        }

    }

По сути, у меня есть несколько путей к файлам.Я хочу скопировать каждый в определенную папку.Что я сделал, я добавил folderBrowserDialog из панели инструментов и поместил его в событие кнопки.

Он выдает это неловкое исключение, когда достигает File.Copy..почему, и как я могу предотвратить это?*

Ответы [ 2 ]

0 голосов
/ 07 июня 2011

Здесь рабочее решение:

private void buttonCopyFiles_Click(object sender, EventArgs e)
{
   OpenFileDialog od = new OpenFileDialog();
   string destDir = @"D:\dest";
   od.Multiselect = true;

   if (od.ShowDialog() == DialogResult.OK)
   {
      foreach (var file in od.FileNames)
      {
         File.Copy(file, Path.Combine(destDir, Path.GetFileName(file)));
      }               
   }
}

В зависимости от количества выбранных файлов и размера выбранных файлов, ваше приложение может зависать на некоторое время

0 голосов
/ 05 июня 2011

Вы не указываете файл для копирования, откуда и происходит исключение.

Вы делаете File.Copy(item,folderBrownserDialog1.SelectedPath);, в то время как вы должны делать File.Copy(item,Path.Combine(folderBrownserDialog1.SelectedPath, item));

Это, конечно, если список item содержит только имена файлов, а не полный текущий путь к файлу.Если это так, вам нужно сделать что-то вроде этого:

        foreach (var item in files)
        {
            var fileName = new FileInfo(item);
            File.Copy(item, Path.Combine(folderBrownserDialog1.SelectedPath, fileName.Name));
        }
...