Thread killen (Aktuellen Befehl ebenfalls)



  • Ich habe einen Thread mit einer Funktion, die etwas länger braucht, bis sie abgearbeitet ist. Nun möchte ich den Thread abbrechen (killen). Doch dies funktioniert nicht mit

    Thread->Abort();
    

    , denn mit diesem Code wird der aktuelle Befehl im Thread noch fertig ausgeführt. Doch ich möchte, dass der Thread sofort gekillt wird und dass der aktuell laufende Befehl sofort gestoppt wird. Ist das möglich?



  • Frage im Thread immer mal wieder eine Variable ab und beende Dich im Thread, wenn diese Variable gesetzt ist.
    Es ist sehr unschön das Thread-Abort zu verwenden...



  • Auf die Idee bin ich auch schon gekommen. Doch es gibt einen Befehl, der mehrere Sekunden dauert. Ich möchte diesen Abbrechen. Eine Variable kann ich erst nach dem Befehl oder vor dem Befehl überprüfen.



  • Threader schrieb:

    Doch es gibt einen Befehl, der mehrere Sekunden dauert. Ich möchte diesen Abbrechen.

    Pech. Geht nicht. Threads killen ist einfach nur falsch, "unsauber" halte ich da sogar noch für eine Untertreibung.



  • hustbaer schrieb:

    Threader schrieb:

    Doch es gibt einen Befehl, der mehrere Sekunden dauert. Ich möchte diesen Abbrechen.

    Pech. Geht nicht. Threads killen ist einfach nur falsch, "unsauber" halte ich da sogar noch für eine Untertreibung.

    dann drehen wir mal den Spies um ... was macht denn dieser Befehl?



  • Der Thread gibt mit Beep(440, 10000); einen Ton aus. Er soll starten, wenn man mit der Maus auf die Anwendung klickt und stoppen, wenn man die Maus loslässt. Starten funktioniert, doch wenn ich den Thread stoppe beept der Computer noch weiter, bis die 10 Sekunden abgelaufen sind. Gibt es eine andere Möglichkeit das Beep zu starten und auch zu stoppen, wenn man die Maustaste loslässt.



  • Es ist AFAIK nicht möglich Beep(..) abzubrechen. Es kehrt zurück, wenn die Zeit abgelaufen ist.

    Simon



  • wie wäre es wenn Du in einer Schleife 10 mal a 1000 Millisekunden den Befehl aufrufst (ich kenne den Befehl nicht) ... dann kannst Du in der Schleife auf die Abbruch-Variable testen und ggf. beenden



  • Das habe ich schon probiert, doch es ist leider nicht möglich.



  • Prozessabschießen geht und stoppt Beep. Vielleicht ja auch Threadabschießen.



  • Du hast mich gerade auf eine tolle Idee gebracht! Ich lass ein Programm starten, sende eine Nachricht, dass es piepen soll und beende es, wenn es aufhören soll zu piepen.


Anmelden zum Antworten