Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Lord Trancos 2 en 17 de Marzo de 2004, 04:30:15 PM

Título: Liberar Recursos
Publicado por: Lord Trancos 2 en 17 de Marzo de 2004, 04:30:15 PM
 ¿En VB.NET se tiene uno que preocupar de liberar recursos? ¿o el garbage collector ese se encarga de todo?

Por ejemplo.
Si quiero que al pulsar un boton, salga un formulario modal yo uso esto



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 Dim l_frm as new frmDialogo

 l_frm.ShowDialog

   End Sub



¿He de poner algo mas para que se libere el formulario? ¿O se queda por ahi lekeando memoria?  
Título: Liberar Recursos
Publicado por: Grugnorr en 17 de Marzo de 2004, 09:48:46 PM
 El Garbage Collector (GC) se encarga de todos los recursos manejados(managed), o sea, todo lo hecho en .NET. Los recursos no manejados como ficheros, handles, conexiones, referencias COM, Fonts.... deberías liberarlos explícitamente. La interfaz IDisposable  define este comportamiento, por el cual puedes liberar recursos no manejados sin tener que esperar a que el GC actúe.

En C# tienes using(){} para que al salir de ámbito te llame automáticamente a Dispose.

Busca en el SDK información sobre IDisposable, todo eso es común a .NET, de VB no sé nada( ni quiero saberlo)

PD: Form implementa IDisposable, así que más que un leak, provocas una "retención" de memoria si al acabar de usarlo no llamas a Dispose(), los recursos del Form no se liberarán hasta que el GC no finalize el Form.

PDD: Mira a ver si en VB tenéis algo equivalente al using(){}, sino llámalo manualmente
Título: Liberar Recursos
Publicado por: Lord Trancos 2 en 17 de Marzo de 2004, 09:53:04 PM
Cita de: "Grugnorr"El Garbage Collector (GC) se encarga de todos los recursos manejados(managed), o sea, todo lo hecho en .NET. Los recursos no manejados como ficheros, handles, conexiones, referencias COM, Fonts.... deberías liberarlos explícitamente. La interfaz IDisposable  define este comportamiento, por el cual puedes liberar recursos no manejados sin tener que esperar a que el GC actúe.

En C# tienes using(){} para que al salir de ámbito te llame automáticamente a Dispose.

Busca en el SDK información sobre IDisposable, todo eso es común a .NET, de VB no sé nada( ni quiero saberlo)

PD: Form implementa IDisposable, así que más que un leak, provocas una "retención" de memoria si al acabar de usarlo no llamas a Dispose(), los recursos del Form no se liberarán hasta que el GC no finalize el Form.

PDD: Mira a ver si en VB tenéis algo equivalente al using(){}, sino llámalo manualmente
gracias, creo que me ha quedado mas claro ;-)