Hey, everyone! I'm making a program that copies files and folders from one location on your computer to another location on your computer. Currently, I'm using the following code (this is only a snippet) to copy all of the files from one directory to another:

Code:
// Get the file list
FileList = Directory.GetFiles(DirName);

// Copy all of the files in the directory
for (int i = 0; i < FileList.Length; i++)
{
    File.Copy(FileList[i], DestDir + "\\" + Finfo.Name, true);
}
This code works great, but the problem occurs when I am copying thousands of files. In a single folder on my computer, i have about 2,000 small (1 - 3 KB) files. After running for a while, the rate at which my program transfers files slows down significantly. For example, it would start out transferring about 20 files per second. When it gets to around 800 files, it'll start to slow down to around 15 files per second. Then this pattern continues until it's down to about 2 files per second.

I cannot seem to find a reason for this performance decrease. I'm not sure if its something inherent in System.File.IO or if I'm doing something incorrectly. As such, I'm wondering if anyone has any insight on my problem and could provide me with any advice. Additionally, I'm wondering if there is a faster alternative to using System.File.IO to copy files from one location to another.

Thank you all very much, and any help would be greatly appreciated!