Avatar billede droa Novice
18. juni 2009 - 13:35 Der er 8 kommentarer og
1 løsning

Lukke Threads når man lukker program

Jeg har jo ikke tænkt over at Threads jo ikke har direkte sammenhæng med ens "form", der betyder, når man lukker "Windows Form" ned, så køre ens Thread selv, man har sat igang. er der en måde og putte dem ind i "lukke" metoden på ens vindue?

så f.eks den lave noget før den lukker programmet, som f.eks stopepr ens thread? jeg har nemlig lavet en "soft stop" metode, som gør mine daterer i min thread ikke bliver ødelagt. og den ville jeg gerne køre inden programmet lukker.. så programmet ikke stadig køre i bagrunden og bruger alt min CPU.
Avatar billede arne_v Ekspert
18. juni 2009 - 13:44 #1
Kald din soft nedlukning i en af close event'ene paa formen.
Avatar billede droa Novice
18. juni 2009 - 13:47 #2
hvordan ændre jeg in Close event som udføres af "x"'et?
Avatar billede arne_v Ekspert
18. juni 2009 - 13:58 #3
Saetter form closed event property i designer mode.

Der genereres saa noget kode a la:

this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainFormFormClosed);

Du kan naturligvis ogsaa skrive koden manuelt, men jeg trro at de fleste bruger designeren.

I metoden der kaldes skal du staa stoppe dine traade.

Demo:

        void MainFormFormClosed(object sender, FormClosedEventArgs e)
        {
            MessageBox.Show("All the threads are going to die !");
        }
Avatar billede martinbk Nybegynder
18. juni 2009 - 13:59 #4
du lytter på FormClosing eventen som fyres når du forsøger at lukke formen (på en hvilken som helst måde på nær self. at dræbe processen)

det er en oplagt metode til f.eks. at spørge brugeren om han/hun vil germme sit arbejde

der er også FormClosed eventen som fyres når formen er lukket lige før objected disposes
Avatar billede droa Novice
18. juni 2009 - 14:14 #5
hmm.. nu har jeg dobbeltklikket på "x"'et i designer mode, og den bringer mig kun form_load event.. hvordan får man det event?
Avatar billede martinbk Nybegynder
18. juni 2009 - 14:16 #6
som arne skrev kan du skrive det manuelt eller i properties vinduet i VS, kilk én gang på formen og tryk så på det lille lyn-ikon i properties vinduet, det giver dig en liste med alle de mulige events for den component du har valgt (i dette tilfælde en form) scroll ned til FormClosing eller FormClosed og dobbeltclick i det tomme felt og voila så skulle der være gevinst
Avatar billede droa Novice
18. juni 2009 - 14:38 #7
mange tak, nu virker det som det skal, og ingen Hængende Threads :)

jeg skal vel faktisk dele point mellem jer, da i begge hjalp?
Avatar billede arne_v Ekspert
18. juni 2009 - 14:52 #8
svar
Avatar billede arne_v Ekspert
18. juni 2009 - 15:08 #9
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