patron Singleton

19/11/2007 - 22:58 por Edilberto Arteaga Lopez | Informe spam
Hola a todos.
Tengo un formulario MDI del cual llamo a otros formularios desde su menu,
estaba leyendo sobre el patron singleton y su implementaciones, lo agregua a
mis formas y funciona hasta que cierro una forma y trato de volver a
abrirla, me da error y dice que no puedo acceder a un objeto destruido
disposed.

Este codigo tengo en la forma

public partial class frmAgrgarReporte : Form
{
static frmAgrgarReporte instance = null;
static readonly object padlock = new object();

public frmAgrgarReporte()
{
InitializeComponent();
}
public static frmAgrgarReporte Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new frmAgrgarReporte();
}
else
{
instance.BringToFront();
}
return instance;
}
}
}
}

en la forma MDI este es el Codigo


private void reportes_LinkPressed(object sender,
DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
frmAgrgarReporte addreportes = frmAgrgarReporte.Instance ;
addreportes.MdiParent = this;
addreportes.Show(); //Cannot access a disposed object. al cerrar
la forma y volver a abriral
}


Saludos
________________________________
Edilberto Arteaga Lopez
El Progreso Yoro, Honduras

Lo que hacemos en la vida, tiene su eco en la eternidad
 

Leer las respuestas

#1 Sashka
19/11/2007 - 23:58 | Informe spam
En el closing
instance = null;

o no cierras sino que lo escondes

this.Hide();

e.Cancel = true;

Sashka

"Edilberto Arteaga Lopez" escribió en el mensaje
news:
Hola a todos.
Tengo un formulario MDI del cual llamo a otros formularios desde su menu,
estaba leyendo sobre el patron singleton y su implementaciones, lo agregua
a mis formas y funciona hasta que cierro una forma y trato de volver a
abrirla, me da error y dice que no puedo acceder a un objeto destruido
disposed.

Este codigo tengo en la forma

public partial class frmAgrgarReporte : Form
{
static frmAgrgarReporte instance = null;
static readonly object padlock = new object();

public frmAgrgarReporte()
{
InitializeComponent();
}
public static frmAgrgarReporte Instance
{
get
{
lock (padlock)
{
if (instance == null)
{
instance = new frmAgrgarReporte();
}
else
{
instance.BringToFront();
}
return instance;
}
}
}
}

en la forma MDI este es el Codigo


private void reportes_LinkPressed(object sender,
DevExpress.XtraNavBar.NavBarLinkEventArgs e)
{
frmAgrgarReporte addreportes = frmAgrgarReporte.Instance ;
addreportes.MdiParent = this;
addreportes.Show(); //Cannot access a disposed object. al
cerrar la forma y volver a abriral
}


Saludos
________________________________
Edilberto Arteaga Lopez
El Progreso Yoro, Honduras

Lo que hacemos en la vida, tiene su eco en la eternidad

Preguntas similares