Avatar billede frostware Nybegynder
25. juni 2007 - 14:54 Der er 3 kommentarer og
1 løsning

Thread og form håndtering

Hej

Jeg har en form som vises. Derefter startes en ny tråd. Når denne tråd er færdig skal formen fjernes igen.

Lige nu har jeg gjort sådan at formen vises og tråden startes ved tryk på en knap. Og som det sidste i koden fra tråden har jeg prøvet at lave en dispose på formen. Men det kan åbenart ikke lade sig gøre.

Hvad gør man så?
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:04 #1
Det er højst sandsynligt, fordi formen kører i den første tråd..

I .NET 2.0 er der kommet tråd-sikkerhed, der forhindre tråde at tage fat i hinandens elementer..

Eksempel:
En tråd kan ikke direkte tage fat i en control (f.eks. TextBox) på en form.

Tråden skal kalde en metode, der bruger Invoke på TextBox'en.


Du skal sikkert gøre det samme med formen..
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:09 #2
Måske sådan her:

private delegate void tagFatIForm();

private void DisposeFormen()
        {
            if (FORMENsNAVN.InvokeRequired)
                this.Invoke(new tagFatIForm(DisposeFormen), new object[] {  });
            else
            {
                FORMENsNAVN.Dispose();
            }
        }

Så skal trådens sidste linie være: DisposeFormen();

Hvis formen er den samme form, som tråden kører fra, erstatter du "FORMENsNAVN" med "this".
Avatar billede frostware Nybegynder
25. juni 2007 - 15:15 #3
Den er bare i vinkel. Smid et svar. Takker!
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:23 #4
Svar smidt :-)
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