メイン フォルダーを取得し、メイン フォルダーのすべてのサブ フォルダーにあるすべてのファイルをコピーするアプリケーションを作成しました。動作しますが、多くのファイルをコピーすると、フォームが完了するまでしばらくの間「応答しません」になります。
これが私が使用しているコードです。
private void buttonCopy_Click(object sender, RoutedEventArgs e)
{
try
{
ArrayList existingFiles = new ArrayList();
string existingFileName = "";
string thePath = folderSelect.Text;
DirectoryInfo di = new DirectoryInfo(thePath);
FileInfo[] allFiles = di.GetFiles("*.*", System.IO.SearchOption.AllDirectories);
foreach (FileInfo file in allFiles)
{
string fullName = file.FullName;
string fileName = System.IO.Path.GetFileName(fullName);
bool fileExists;
fileExists = File.Exists(folderSave.Text + System.IO.Path.DirectorySeparatorChar + fileName);
if (!fileExists)
{
file.CopyTo(folderSave.Text + System.IO.Path.DirectorySeparatorChar + fileName);
}
else
{
existingFileName += fileName + "\n";
existingFiles.Add(existingFileName);
}
}
if (existingFiles.Count != 0)
{
System.Windows.MessageBox.Show(existingFiles.Count + " Files already exists!\n\n" + existingFileName);
}
System.Windows.MessageBox.Show("Files copied successfully!");
}