Autor Tema: donde termina una dll  (Leído 3971 veces)

0 Usuarios y 1 Visitante están viendo este tema.

k_arlytos

  • Megabyte
  • ***
  • Mensajes: 211
  • Reputación: +2/-4
    • Ver Perfil
donde termina una dll
« en: Agosto 13, 2009, 02:44:06 pm »
hola que tal una sugerencia en q momento termina una dll cuando le hago
dim x as new dll
set x=nothing ----------> que sucede aqui
o cuando si esque la variable esta declarado en un pocedimiento de un boton que digamos
sub btnopera_click()
dim x as new dll
procesos que hago con la dll
.
.
.
.
.
end sub ' en este punto llama a el evento terminate de la dll
o que sucede en este punto
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:donde termina una dll
« Respuesta #1 en: Agosto 13, 2009, 03:54:07 pm »
Hola, si la declaras como as new en un formulario en la parte superior y no la descargas con Set C = Nothing en algun momento, esta se termina cuando se descarga el formulario

si la declaras dentro de un evento esta se termina al salir del evento

Código: [Seleccionar]
Private Sub Command1_Click()
   Set C = New Class1
   Debug.Print C.Suma(2, 3)
End Sub

pero si la declaras en la parte superior del formulario
y la inicializas en un evento esta no se descarga al salir del evento a menos que lo agas tu mismo (Set C = Nothing), lo hara al descargar el formulario

para que hagas tus propios experimentos y saques tus concluciones hace los siguiente

crea un modulo Clase y pone el siguiente codigo
Código: [Seleccionar]
Option Explicit

Private Sub Class_Initialize()
Debug.Print "estoy Inicializada"
End Sub

Private Sub Class_Terminate()
Debug.Print "estoy descargada"
End Sub

Public Function Suma(Byval valor1 As Long,Byval  valor2 As Long) As Long
Suma = valor1 + valor2
End Function

vas a ver que si vos declaras
Dim C As New Class1
el sub Initialize de la clase no se dispara asta que no llames una funcion de la clase
creo que aver leido alguna ves que no es aconsejable declararlo asi, no tengo ni idea porque
lo mejor es declararla y luego inicializarla

Código: [Seleccionar]
Option Explicit
Dim C As New Class1

Private Sub Form_Load()
     Set C = New Class1
End Sub

tambien creo que es aconsejable descargarla  (Set C = Nothing) por las dudas

Saludos

cobein

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 348
  • Reputación: +63/-0
  • Más Argentino que el morcipan
    • Ver Perfil
Re:donde termina una dll
« Respuesta #2 en: Agosto 15, 2009, 02:02:09 am »
"Inicializarla" no es garantia de que el sub Initialize se ejecute, si la declaras as new no va a pasar nada hasta que se utilize la clase.
« última modificación: Agosto 22, 2009, 12:16:22 am por cobein »