¿Donde debo crear el objeto para optimizar el uso de memoria?

Vuelvo a ser yo, el del FileCopy.
Ahora mi duda reside en donde crear el objeto para optimizar el uso de memoria. Me explico:
Lo que quiero hacer es copiar un archivo cada minuto, entonces utilizo un Timer con la propiedad Interval=60000 y el siguiente código:
Private Sub Timer1_Timer()
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile RutaOrigen, RutaDestino, True
End Sub
Me da miedo la primera linea de las 2, porque si creo el objeto dentro del Timer, me lo creará cada vez y puede que tenga problemas de memoria a la larga. ¿Cómo lo hago para que sea óptimo?
Puedo hacer el:
Set fso = CreateObject("Scripting.FileSystemObject")
¿A fuera como si declarara una variable global?

2 Respuestas

Respuesta
1
No tenes problema de hacer cualquiera de las dos maneras,
si pones Set fso = CreateObject("Scripting.FileSystemObject")
En el load del formulario principal, tendrías el objeto creado continuamente, al hacerlo en una subrutina, lo creas en el momento de utilizarlo, fíjate que siempre estarías creando el mismo objeto, nunca los tendrías duplicados, es el mismo nombre (fso). Ocupa casi nada de memoria.
Cualquier otra duda estoy a tu disposición.
Respuesta
1
A mí personalmente no me gustan las variables globales y antes de crear una me lo pienso muy, mucho.
Lo que quieres hacer es perfectamente válido y si tú eres el único que va a tocar el código, adelante!
Yo lo que haría es probar. Arranca el medidor de recursos y deja el programa en un bucle similar al que vas a implementar (quizá en vez de cada minuto copia un fichero cada 10 segundos para darle caña) durante una noche o un fin de semana. Si a la mañana siguiente o tras un fin de semana el ordenador no presenta síntomas de haber perdido memoria o recursos del sistema yo te aconsejaría que definieras la variable localmente. De todas formas, si por cada objeto que creamos de forma local nos tenemos que preocupar por esto estaríamos perdidos. Confía en Microsoft por una vez :-)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas