Avatar billede extremecode Nybegynder
26. oktober 2004 - 15:15 Der er 10 kommentarer og
1 løsning

hvordan dræber man subtråde??

Har en hoved tråd som bliver startet...og den kan også fint dræbes igen ved at bruge abort...

Men alle tråde som hovedtråden har oprettet kører videre...

hvordan dælen dræber man dem??

Det skulle gerne være sådan at når hovedtråden blev dræbt skulle alle den subtråde også dø...
Avatar billede sw_red_6 Nybegynder
26. oktober 2004 - 15:17 #1
kan du ikke bruge abort på dine subtråde?
Avatar billede extremecode Nybegynder
26. oktober 2004 - 15:18 #2
kan du give et eksempel på det??

problemet er vi starter hovedtråden i en klasse, mens subtråden kører fra en anden klasse....
Avatar billede sw_red_6 Nybegynder
26. oktober 2004 - 15:23 #3
Jeg har ikke prøvet at programmere tråde i C# endnu, så det var bare et gæt. Hvordan aborter du din hovedtråd helt nøjagtigt? det kunne måske være muligt at du laver en funktion som først dræber subtrådene og derefter hovedtråden.

Eller hvad med at lave et tjek i subtråd-klassen på om hovedtråden stadig eksisterer og hvis ikke den gør så dræbe subtrådene derefter.
Avatar billede sw_red_6 Nybegynder
26. oktober 2004 - 15:30 #4
Er der et event tilknyttet abort? hvis der er kunne man jo egentlig "bare" tjekke på om eventet er blevet kastet.
Avatar billede arne_v Ekspert
26. oktober 2004 - 15:48 #5
Det er lige ud af landevejen:

// lav tråd
Thread t = new Thread(new ThreadStart(dinmetode));
// start tråd
t.Start();
...
// abort tråd
t.Abort();
Avatar billede extremecode Nybegynder
26. oktober 2004 - 16:16 #6
ok kommer med et eks...

startclass
        [STAThread]
        static void Main(string[] args)
        {
        Class2 cl2 = new Class2();
        Thread trd1 = new Thread(new ThreadStart(cl2.trdStart));
        trd1.Start();
            while(true)
            {
                Console.WriteLine("trala");
                Thread.Sleep(1000);
            }
        }

class2
        public void trdStart()
        {
            Class3 cl3 = new Class3();
            Thread trd3 = new Thread(new ThreadStart(cl3.trd3Start));
            trd3.IsBackground=true;
            trd3.Start();

                while(true)
                {
                    Console.WriteLine("lala");
                    Thread.Sleep(4000);
                    Thread.CurrentThread.Abort();
                }
        }

class3
    public class Class3
    {
        public Class3()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public void trd3Start()
        {
            while(true)
            {
                Console.WriteLine("lulu");
                Thread.Sleep(1000);
            }
        }
    }

når tråden for class2 dræbes skulle tråden for class3 også dræbes..men det bliver den ikke
Avatar billede extremecode Nybegynder
26. oktober 2004 - 16:17 #7
startclasse tråden skal blive ved med at køre og trådene for class2 og 3 skal dræbes
Avatar billede arne_v Ekspert
26. oktober 2004 - 16:22 #8
class2 skal ændres til at have:

try {
    // nuværende kode
}
catch(ThreadAbortException e)
{
    // stop tråd 3
}
Avatar billede extremecode Nybegynder
27. oktober 2004 - 10:37 #9
takker Arne det ser ud til det virker.....
Send lige svar så får du point
Avatar billede arne_v Ekspert
27. oktober 2004 - 10:39 #10
svar
Avatar billede extremecode Nybegynder
27. oktober 2004 - 14:31 #11
points
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