Foros del Web » Programación para mayores de 30 ;) » .NET »

Liberar memoria... Reflection

Estas en el tema de Liberar memoria... Reflection en el foro de .NET en Foros del Web. Hola Estoy haciendo una aplicacion Windows y utilizo reflection para cargar un dll a mi aplicacion windows, el problema es que no me esta liberando ...
  #1 (permalink)  
Antiguo 13/12/2005, 18:24
 
Fecha de Ingreso: diciembre-2005
Mensajes: 10
Antigüedad: 18 años, 4 meses
Puntos: 0
Liberar memoria... Reflection

Hola

Estoy haciendo una aplicacion Windows y utilizo reflection para cargar un dll a mi aplicacion windows, el problema es que no me esta liberando el dll que crea la primera vez, sino que cada vez que entro o que navego en mi aplicacion crea una nueva referencia al dll. Despues de un rato la aplicacion marca que el dll esta siendo utilizada por alguien mas.

Alguien sabe como liberar el recurso que estoy creando con el assembly??
el codigo que uso para agregarlo es el siguiente:

Public Prueba As [Assembly]
Prueba = [Assembly].LoadFrom("Prueba.dll")
Try
tipo = Prueba.GetType(Forma1)
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OKOnly, "Error")
End Try
If Not (tipo Is Nothing) Then
Try
forma = DirectCast(Activator.CreateInstance(tipo), Prueba.FormaBase)
Catch exe As Exception
MsgBox(exe.InnerException.Message)
End Try
End If

Gracias
  #2 (permalink)  
Antiguo 13/12/2005, 18:50
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hay alguna razón especial para cargar ese ensamblado por reflection?

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 14/12/2005, 10:05
 
Fecha de Ingreso: diciembre-2005
Mensajes: 10
Antigüedad: 18 años, 4 meses
Puntos: 0
Esto es lo que intento lograr

Hola :)

Lo que intento hacer es tengo varios proyectos un exe y 3 dll, tengo un base.dll que es la base de los demas dll, en cuestiones de controles en la forma windows, en mi aplicacion exe tengo un combo que cuando es el que me indica que proyecto.dll cargar, entonces uso el assembly para en tiempo de ejecucion cargar el proyecto.dll que el usuario escoja en el combo y hacerle un activecast a la base.dll y asi estarlo mostrarlo.

El problema es que cuando yo cambio de proyecto.dll me crea otra referencia a base.dll y no me destruye la anterior. Cuando ya no me deja correr mi aplicacion, tengo que cerrar todo el Visual Studio para que me destruya toda las referencias que tenia creadas a base.dll porque cerrar la solucion no es suficiente.

No se mucho de manejo de memoria y no se si esto se pueda hacer de otra manera mas sencilla.

Cualquier ayuda sera bienvenida :) gracias

Candy_2
p.d Gracias por lo del link ya quedo.
  #4 (permalink)  
Antiguo 14/12/2005, 13:43
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Hmm, por qué no haces referencia a dichas dlls en tiempo de compilación (agregar referencia), ya que el cargar y descargar ensamblados no es muy bueno que digamos.

Si de todas maneras quieres cargar los dlls con reflection, entonces hazlo sólo una vez, no es necesario que estes cargando y descargando con cada uso, esa forma de trabajar, IMHO, es más ideal cuando se requiere que tu aplicación haga uso de plugins.

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:11.