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
 
Was meinst du mit "zu dieser App gestartet"? Startest du selber weitere Prozesse? Dann merke dir doch einfach deren IDs.
 
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
 
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
 
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
 
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:
Ich habe ein Programm das mehrere Threads startet.

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

Cheers Many
 
Zurück