File.Copy() is not good for copying LARGE files. This works great normally and you can do status bars and all kinds of stuff when using it, however, it was clearly not designed to work gracefully with large files. Instead of that, you can go ahead with asynch file copying.
public void CopyFile(string source, string dest)
{
using (FileStream sourceStream = new FileStream(source, FileMode.Open))
{
byte[] buffer = new byte[64 * 1024];
using (FileStream destStream = new FileStream(dest, FileMode.Create))
{
int i;
while ((i = sourceStream.Read(buffer, 0, buffer.Length)) > 0)
{
destStream.Write(buffer, 0, i);
OnProgress(sourceStream.Position, sourceStream.Length);
}
}
}
}
--Amit