Thread beenden

Many0815

Mitglied
Hallo

Also ich habe folgendes Problem.

Ich hab eine App geschrieben die nen µC programmiert und dann verschiedene Tests durchführt (Hardware und Software tests).
Jedenfalls wenn ich die App während eines Tests schließe, laufen trotzdem alle Tests weiter und der Prozess wird erst gelöscht wenn das komplette Program durchgelaufen ist.

Habe jetzt einen ExitEventhandler eingebaut der auch funktioniert.

Nun ist meine Frage ob ich irgendwie eine Liste bekomme, wo alle Threads aufgelistet sind (thread id oder so) die zu dieser app gestartet wurden, damit ich die dann killen kann...

danke schonmal für eine Antwort

cheers Many
 

Shakie

Erfahrenes Mitglied
Was meinst du mit "zu dieser App gestartet"? Startest du selber weitere Prozesse? Dann merke dir doch einfach deren IDs.
 

MCoder

Erfahrenes Mitglied
Laufende Threads sollten eigentlich nicht von außen abgeschossen werden, sondern einen Mechanismus implementiert bekommen, mit dem sie sich (auf Anforderung) selbst beenden können.

Gruß
MCoder
 

Many0815

Mitglied
Also die Application wird gestartet und dann wird zum Beispiel ein LED test gestartet und dieser Test läuft über einen Thread. Beende ich jetzt das Programm, dann läuft der Thread trotzdem weiter.
Also im Taskmanager sehe ich das Programm noch arbeiten.

Laufende Threads sollten eigentlich nicht von außen abgeschossen werden, sondern einen Mechanismus implementiert bekommen, mit dem sie sich (auf Anforderung) selbst beenden können.

Ja genau sowas will ich ja hinbekommen, dass wenn die Anwendung geschlossen wird, dass das vielleicht irgendwie über den eventHandler läuft dass die Threads dann gekillt werden...
oder so^^

cheers Many
 

MCoder

Erfahrenes Mitglied
Hallo,

ein Thread wird ja in der Regel über eine Endlosschleife "am Leben" erhalten:
C#:
while( 1 )
{
    // ...
}
Baut man in die Schleife irgendwo ein Abbruchbedingung ein, z.B. ein Flag im Schleifenkopf:
C#:
while( bRun )
dann könnte man damit den Thread sauber beenden, indem man das Flag zurücksetzt und damit schlicht die Schleife verlässt.

Gruß
MCoder
 

Shakie

Erfahrenes Mitglied
Zum Verständnis: Du hast genau ein Programm, dass aber mehrere Threads startet, unter anderem den LED-Test-Thread? Oder hast du mehrere Programme, darunter das LED-Test-Programm? Wenn letzteres: hast du Zugriff auf den Quellcode des LED-Test-Programms (hast du es geschrieben)? Wenn ja, dann könntest du MCoders Vorschlag umsetzen.

Wenn ersteres: dann kannst du die Thread.Abort-Methode des Threads aufrufen, den du beenden möchtest.
 
Zuletzt bearbeitet:

Many0815

Mitglied
Ich habe ein Programm das mehrere Threads startet.

Danke für die Hilfe. Mit Thread.Abort funktionierts gut.

Cheers Many