Avatar billede brian0905 Nybegynder
15. august 2007 - 11:19 Der er 2 kommentarer og
1 løsning

Tråde og indkapsling

Hej igen,

Jeg sidder med en applikation som starter en tråd op som udfører arbejde i baggrunden. Desuden er der flere steder rundt omkring i min applikation som bruger tråde til at tilgå forskellige ting. Jeg starter min tråd og lukker den igen når den er færdig, ingen hokus pokus. Men hvis brugeren lukker min applikation ned inden min tråd er færdig, så kører processen videre (hænger). Indtil videre har jeg lavet en collection af Thread objectet i en statisk klasse som jeg så løber igennem og lukker alle de tråde der måtte køre, ved nedlukning af applikation, findes der en smartere måde?

I mangel på en smartere måde til ovenstående har jeg besluttet mig for at lave et dedikeret objekt til trådhåndtering : en "ThreadDispenser":


public class ThreadDispenser
    {
        private List<Thread> threads;

        public ThreadDispenser()
        {
            threads = new List<Thread>();
        }

        public Thread GetThread(object target)
        {
            Thread result = new Thread(new ThreadStart(target));
            threads.Add(result);
            return result;
        }

men hvordan dælen kan man lave parametern til ThreadStart som parameter i GetThread klassen, object er en forkert datatype ?? hvad er datatypen for en metode?
Avatar billede brian0905 Nybegynder
15. august 2007 - 11:26 #1
har ændret getThread til følgende:

public Thread GetThread(ThreadStart target)
        {
            Thread result = new Thread(target);
            threads.Add(result);
            return result;
        }

det ser ud til at virke
Avatar billede kristofferf Nybegynder
15. august 2007 - 14:36 #2
Hej brian0905

Hvis det eneste du vil være sikker på er, at dine tråde stoppes når dit program lukkes, og du er ligeglad med om de får gjort det arbejde færdigt de er i gang med, så er den nemmeste måde at sætte følgende property på din tråd:

Thread myThread = New Thread
myThread.IsBackground = True

Mvh
Kristoffer
Avatar billede md_craig Nybegynder
15. august 2007 - 21:06 #3
Du kan evt. bruge System.Environment.Exit(-1);

Den tvinger din proces ned...
jeg er personligt ikke tilhænger af den måde...
Men ikke desto mindre så virker den...
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