Hej Nej! Hm. Dispose-metoden är främst till för att deallokera resurser (minne, filer,...). Detta görs genom Interface:t IDisposable som ramverket känner till och genom konventioner om hur en Dispose-metode fungerar. Tyvärr är det inte jag som disposar objectet. Har inte lyckats klura ut exakt när det händer...ObjectDisposedException
Jag kollar om en Form är null. Är den inte det kör jag .Show(), är den det gör jag new på det först.
Till problemet:
Jag får System.ObjectDisposedException (ibland) när jag kör Show(). Borde inte objectet vara null om det är disposed? om inte, hur kollar jag om det är disposed eller inte?
Tack på förhand!
peterbladhSv: ObjectDisposedException
Antagligen menar du referensen till objektet, den blir inte null bara för att du gör dispose på objektet.
Kolla istället propertyn "IsDisposed"Sv: ObjectDisposedException
Jag jobbar i Compact Framework och där finns inte den propertyn. Finns det något annat sätt att kolla?
/peterbladhSv: ObjectDisposedException
Efter att Dispose är exekverad så är objektet i ett slags mellanläge, objektet finns i minnet och du har en pekare till det, men du får inte använda det. Det enda som ska kunna hända efter att objektet är "Disposat" är att garbagecollectorn ska lämna tillbaka minnesutrymmet och sätta referensen till null.
Det finns dock inget som hindrar att du själv sätter referensen till null efter att du anropat Dispose, vilket jag rekommenderar att du gör, speciellt när du vill återanvända objektvariabeln på det sättet som du beskriver. Så om det är du själv som anropar Dispose-metoden, sätt variabeln till null på raden efter så har du rensat upp efter dig.
/Per HultqvistSv: ObjectDisposedException
/peterbladh