Visual Basic - Problemas con una clase. Ayuda!!

Life is soft - evento anual de software empresarial
 
Vista:

Problemas con una clase. Ayuda!!

Publicado por Sergio (2 intervenciones) el 30/01/2004 18:05:06
Hola a todos!
Tengo un grave problema. Tengo creada una ActiveX DLL con VB6. La función de esta dll es basicamente enviar y recibir archivos de un servidor. Para ello utilizo el Internet Transfer Control, con lo cual tengo que utilizar un formulario para poder utilizarlo, lo que hago es ocultar este para que el usuario no lo veo.
Entonces, la dll tiene una clase de este estilo:

Private Sub Class_Initialize()
Set lfformulario = New frmSync
Call lfformulario.InitForm(Me)
mShutdown = False
End Sub

Private Sub Class_Terminate()
Unload lfformulario
Set lfformulario = Nothing
End Sub

Y en el formulario tengo:
Public Sub InitForm(ByRef cSync As FOSincronizacion)

Set cFOSync = cSync
Load Me

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Inet.Cancel

End Sub

Dentro del formulario tambien tengo un timer que lanza el proceso cada cierto tiempo automaticamente.
El problema es que cuando destruyo, como una clase normal asignandole 'Nothing', esta no entra dentro de su class_terminate, con lo cual continua existiendo la referencia y esta continua ejecutandose.
Que es lo que pasa??
Sergio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con una clase. Ayuda!!

Publicado por Cecilia Colalongo (3117 intervenciones) el 31/01/2004 01:31:34
En general los destructores no funcionan muy bien en VB, además posee el garbage collector que es el que se encarga de eliminar los objetos de memoria. Conviene que crees un método que haga lo que hace el Class_Terminate y lo invoques explícitamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con una clase. Ayuda!!

Publicado por biT (25 intervenciones) el 31/01/2004 08:22:05
los objetos de vb son igual a un objeto COM
no son como los objetos de otros lenguajes donde puedes tener 1000 referencias pero si destruyes una, el objeto se destruye y los demas punteros a ese objeto son invalidos.

en vb para que se destruya un objeto las referencias tienen que estar a "CERO", si destruyes un objeto la referencias desminuira.
asi que asegurate de destruir todas las referencias.
si no recuerdo mal seria asi...

set objeto = new class ; 1 referencia
set otroobjeto = objeto ; 2 referencias
set objeto = nothing ; 1 referencia

muchos piensan que ahi se destruye el objeto pero no, los que hicieron vb estaban enamorados de la tecnologia COM jejeje.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con una clase. Ayuda!!

Publicado por Sergio (2 intervenciones) el 02/02/2004 10:31:33
Muchas gracias biT!!!
Si, era eso, no sabia que los objetos COM funcionaran de ese modo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar