Solución: FileInfo.Length devuelve un tamaño desactualizado para un archivo que aún se está escribiendo en Windows
FileInfo almacena su tamaño en caché, la enumeración lee la entrada de directorio de NTFS, que se actualiza de forma diferida, y el escritor puede seguir reteniendo bytes en sus propios búferes. Usa Refresh() o, mejor, lee la longitud desde un handle compartido con RandomAccess.GetLength.