Avatar billede rmjdk Nybegynder
13. maj 2009 - 15:23 Der er 10 kommentarer

Cannot access a disposed object

Hejsa

Jeg har en form (form1) der instantierer en anden form (form2) (virker fint), når jeg er færdig med at benytte form2 kalder jeg this.Dispose(); hvilket også virker fint nok. Men når jeg næste gang skal bruge form2 instantierer jeg en ny form2 med new, men når jeg prøver at tilgå en control på form2 får jeg at vide at jeg "Cannot access a disposed object" exception hvilket jeg ikke forstår da jeg har lavet en helt ny instans af formen.
Avatar billede rmjdk Nybegynder
13. maj 2009 - 15:25 #1
NB Jeg kan løse det ved at have if (control.IsDisposed) control = new SomeControl() men det er ikke så fedt at skulle det ved alle controller på formen, samt det forurener koden!
Avatar billede arne_v Ekspert
13. maj 2009 - 15:28 #2
Har du nogen static fields i din form?
Avatar billede rmjdk Nybegynder
13. maj 2009 - 15:38 #3
Nej, ingen static fields. Form2 ser således ud http://pastebin.com/m20ab9add
Avatar billede zkill Nybegynder
13. maj 2009 - 15:54 #4
kan du ik bare kalde
This.close();
på form2..?
Avatar billede rmjdk Nybegynder
13. maj 2009 - 15:58 #5
Close() giver samme resultat..

Jeg har prøvet at signe på form2.Disposed eventet med en metode der null'er min reference til formen - samme resultat.
Avatar billede sirius Nybegynder
13. maj 2009 - 16:13 #6
Hvor i koden er det du får fejlen ?

en anden ting..
burde det ikke være:
Invoke(new UpdateProgressBarDlg(UpdateProgessbar), new object[] { sender, e });
Avatar billede rmjdk Nybegynder
13. maj 2009 - 16:19 #7
fejlen opstår i UpdateLog() metoden, der hvor den vil accesse logTB (linje 28).

sirius, om jeg sender 'sender' videre burde ikke gøre nogen forskel for dette problem, den indeholder jo bare info. om ja... senderen :)
Avatar billede sirius Nybegynder
13. maj 2009 - 16:28 #8
hvad er logTB og hvor er den defineret henne ?

ved godt det ikke har nogen betydning for dette problem, men det er vel stadig en fejl :-)
Avatar billede sirius Nybegynder
13. maj 2009 - 16:31 #9
Det kan være du har noget kode fra form1 som kalder UpdateLog på form2 efter du har trykket på din DisposeBtn på form2
Avatar billede zkill Nybegynder
15. maj 2009 - 11:53 #10
tror næsten du blir nød til at smide lidt af den kode rundomkring problemet, for at det blir nemmere at se fejlen evt..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester