Mira este ejemplo, lo único que le falta es incluirle el ProgressBar, ninguna acción se permite después que empieza a ejecutarse el método.
void Ejemplo()
{
string des;
System.IO.StreamReader file = new System.IO.StreamReader(archivo);
while ((line = file.ReadLine()) != null)
{
des = destino;
foreach (string aux in extensions)
{
if (line.Contains(aux) == true)
{
System.IO.FileInfo s = new System.IO.FileInfo(line);
des += s.Name;
System.IO.File.Copy(line, des, false);
break;
}
}
}
file.Close();
MessageBox.Show("Done!!!");
}