Temor al recolector de basura

29/07/2004 - 01:50 por Omar del Valle | Informe spam
Hola lista,

Tengo el siguiente problema.

Tengo un botón donde al dar clic deseo que se muestre una nueva ventana.
Hago lo siguiente:

... onclick(..)
{
FormNueva frmNueva = new FormNueva();
frmNueva.Show();
}

Esto funciona bien.. siempre que oprimo el botón se abre una nueva ventana.
Mi miedo es que como siempre uso la misma variable (frmNueva) para la nueva
ventana, el recolector de basura de .NET pueda limpiar con las referencias
anteriores.

¿Como puedo hacer para lograr lo que deseo sin miedo a perder referencias?

Gracias
Salu2
Omar del Valle R.
Ciudad de la Habana - Cuba
Desarrollador Microsoft 3 Estrellas .NET
El brillo aislado, es luz desperdiciada. theSpoke

Preguntas similare

Leer las respuestas

#1 Zephryn Xirdal
28/07/2004 - 23:06 | Informe spam
Creo -sólo creo- que eso no importa. El recolector de basura encontrará la
referencia perdida y la eliminará.

Puedes usar frmNueva.Dispose();

O crear el form al principio de todo y mostrarlo/ocultarlo a voluntad.

O que frmNueva sea una variable local, así, al salir de ámbito, queda
marcada para el recolector de basura.


"Omar del Valle" escribió en el mensaje
news:
Hola lista,

Tengo el siguiente problema.

Tengo un botón donde al dar clic deseo que se muestre una nueva ventana.
Hago lo siguiente:

... onclick(..)
{
FormNueva frmNueva = new FormNueva();
frmNueva.Show();
}

Esto funciona bien.. siempre que oprimo el botón se abre una nueva


ventana.
Mi miedo es que como siempre uso la misma variable (frmNueva) para la


nueva
ventana, el recolector de basura de .NET pueda limpiar con las referencias
anteriores.

¿Como puedo hacer para lograr lo que deseo sin miedo a perder referencias?

Gracias
Salu2
Omar del Valle R.
Ciudad de la Habana - Cuba
Desarrollador Microsoft 3 Estrellas .NET
El brillo aislado, es luz desperdiciada. theSpoke


Respuesta Responder a este mensaje
#2 MajorTom
29/07/2004 - 01:49 | Informe spam
Omar, no te preocupes, el recolector trabaja con un contador de referencias,
y solo cuando este sea cero es que estara disponible para retirar el objeto.

MajorTom

"Omar del Valle" wrote in message
news:
Gracias por la respuesta, pero parece que no me supe explicar.

A ver, el código que envié es el evento Clic de un botón por lo que cuando
el botón se oprima 10 veces yo tendré 10 ventanas abiertas en mi


aplicación.
Eso no me preocupa, es exactamente lo que deseo. Mi miedo es que como las


10
ventanas se abren usando como variable frmNueva dentro del evento, el
recolector de basura pueda entender que no hay acceso a las 9 ventanas
abiertas anteriormente y me elimine la referencia.

Gracias y
Salu2
Omar del Valle R.
Ciudad de la Habana - Cuba
Desarrollador Microsoft 3 Estrellas .NET
El brillo aislado, es luz desperdiciada. theSpoke


Salu2
Omar del Valle R.
Ciudad de la Habana - Cuba
Desarrollador Microsoft 3 Estrellas .NET
El brillo aislado, es luz desperdiciada. theSpoke
"Zephryn Xirdal" wrote in message
news:uHN#
> Creo -sólo creo- que eso no importa. El recolector de basura encontrará


la
> referencia perdida y la eliminará.
>
> Puedes usar frmNueva.Dispose();
>
> O crear el form al principio de todo y mostrarlo/ocultarlo a voluntad.
>
> O que frmNueva sea una variable local, así, al salir de ámbito, queda
> marcada para el recolector de basura.
>
>
> "Omar del Valle" escribió en el mensaje
> news:
> > Hola lista,
> >
> > Tengo el siguiente problema.
> >
> > Tengo un botón donde al dar clic deseo que se muestre una nueva


ventana.
> > Hago lo siguiente:
> >
> > ... onclick(..)
> > {
> > FormNueva frmNueva = new FormNueva();
> > frmNueva.Show();
> > }
> >
> > Esto funciona bien.. siempre que oprimo el botón se abre una nueva
> ventana.
> > Mi miedo es que como siempre uso la misma variable (frmNueva) para la
> nueva
> > ventana, el recolector de basura de .NET pueda limpiar con las
referencias
> > anteriores.
> >
> > ¿Como puedo hacer para lograr lo que deseo sin miedo a perder
referencias?
> >
> > Gracias
> > Salu2
> > Omar del Valle R.
> > Ciudad de la Habana - Cuba
> > Desarrollador Microsoft 3 Estrellas .NET
> > El brillo aislado, es luz desperdiciada. theSpoke
> >
> >
>
>


Respuesta Responder a este mensaje
#3 Omar del Valle
29/07/2004 - 03:59 | Informe spam
Gracias por la respuesta, pero parece que no me supe explicar.

A ver, el código que envié es el evento Clic de un botón por lo que cuando
el botón se oprima 10 veces yo tendré 10 ventanas abiertas en mi aplicación.
Eso no me preocupa, es exactamente lo que deseo. Mi miedo es que como las 10
ventanas se abren usando como variable frmNueva dentro del evento, el
recolector de basura pueda entender que no hay acceso a las 9 ventanas
abiertas anteriormente y me elimine la referencia.

Gracias y
Salu2
Omar del Valle R.
Ciudad de la Habana - Cuba
Desarrollador Microsoft 3 Estrellas .NET
El brillo aislado, es luz desperdiciada. theSpoke


Salu2
Omar del Valle R.
Ciudad de la Habana - Cuba
Desarrollador Microsoft 3 Estrellas .NET
El brillo aislado, es luz desperdiciada. theSpoke
"Zephryn Xirdal" wrote in message
news:uHN#
Creo -sólo creo- que eso no importa. El recolector de basura encontrará la
referencia perdida y la eliminará.

Puedes usar frmNueva.Dispose();

O crear el form al principio de todo y mostrarlo/ocultarlo a voluntad.

O que frmNueva sea una variable local, así, al salir de ámbito, queda
marcada para el recolector de basura.


"Omar del Valle" escribió en el mensaje
news:
> Hola lista,
>
> Tengo el siguiente problema.
>
> Tengo un botón donde al dar clic deseo que se muestre una nueva ventana.
> Hago lo siguiente:
>
> ... onclick(..)
> {
> FormNueva frmNueva = new FormNueva();
> frmNueva.Show();
> }
>
> Esto funciona bien.. siempre que oprimo el botón se abre una nueva
ventana.
> Mi miedo es que como siempre uso la misma variable (frmNueva) para la
nueva
> ventana, el recolector de basura de .NET pueda limpiar con las


referencias
> anteriores.
>
> ¿Como puedo hacer para lograr lo que deseo sin miedo a perder


referencias?
>
> Gracias
> Salu2
> Omar del Valle R.
> Ciudad de la Habana - Cuba
> Desarrollador Microsoft 3 Estrellas .NET
> El brillo aislado, es luz desperdiciada. theSpoke
>
>


Respuesta Responder a este mensaje
#4 Zephryn Xirdal
29/07/2004 - 15:38 | Informe spam
Sip, y ese es un tema un tanto difícil de comprender a los que venimos del
C++, porque un error típico es dejar esas ventanas huérfanas... aunque el
win32 las cerrará todas cuando finalice la aplicación, pero mientras estarán
ocupando memoria.

En C# es todo mucho más claro y limpio, pero se nos hace difícil por todo lo
que llevamos heredado del c++.

"MajorTom" escribió en el mensaje
news:
Omar, no te preocupes, el recolector trabaja con un contador de


referencias,
y solo cuando este sea cero es que estara disponible para retirar el


objeto.

MajorTom

"Omar del Valle" wrote in message
news:
> Gracias por la respuesta, pero parece que no me supe explicar.
>
> A ver, el código que envié es el evento Clic de un botón por lo que


cuando
> el botón se oprima 10 veces yo tendré 10 ventanas abiertas en mi
aplicación.
> Eso no me preocupa, es exactamente lo que deseo. Mi miedo es que como


las
10
> ventanas se abren usando como variable frmNueva dentro del evento, el
> recolector de basura pueda entender que no hay acceso a las 9 ventanas
> abiertas anteriormente y me elimine la referencia.
>
> Gracias y
> Salu2
> Omar del Valle R.
> Ciudad de la Habana - Cuba
> Desarrollador Microsoft 3 Estrellas .NET
> El brillo aislado, es luz desperdiciada. theSpoke
>
>
> Salu2
> Omar del Valle R.
> Ciudad de la Habana - Cuba
> Desarrollador Microsoft 3 Estrellas .NET
> El brillo aislado, es luz desperdiciada. theSpoke
> "Zephryn Xirdal" wrote in


message
> news:uHN#
> > Creo -sólo creo- que eso no importa. El recolector de basura


encontrará
la
> > referencia perdida y la eliminará.
> >
> > Puedes usar frmNueva.Dispose();
> >
> > O crear el form al principio de todo y mostrarlo/ocultarlo a voluntad.
> >
> > O que frmNueva sea una variable local, así, al salir de ámbito, queda
> > marcada para el recolector de basura.
> >
> >
> > "Omar del Valle" escribió en el mensaje
> > news:
> > > Hola lista,
> > >
> > > Tengo el siguiente problema.
> > >
> > > Tengo un botón donde al dar clic deseo que se muestre una nueva
ventana.
> > > Hago lo siguiente:
> > >
> > > ... onclick(..)
> > > {
> > > FormNueva frmNueva = new FormNueva();
> > > frmNueva.Show();
> > > }
> > >
> > > Esto funciona bien.. siempre que oprimo el botón se abre una nueva
> > ventana.
> > > Mi miedo es que como siempre uso la misma variable (frmNueva) para


la
> > nueva
> > > ventana, el recolector de basura de .NET pueda limpiar con las
> referencias
> > > anteriores.
> > >
> > > ¿Como puedo hacer para lograr lo que deseo sin miedo a perder
> referencias?
> > >
> > > Gracias
> > > Salu2
> > > Omar del Valle R.
> > > Ciudad de la Habana - Cuba
> > > Desarrollador Microsoft 3 Estrellas .NET
> > > El brillo aislado, es luz desperdiciada. theSpoke
> > >
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida