Thread zum Unterbrechen einer Funktion



  • Hallo,
    ich hab folgendes Problem: Ich mache von meiner Software aus eine Datenausgabe. Es soll in der Oberfläche eine Taste geben um eben diese Ausgabe wieder zu stoppen. Ich hab schon mal bei google und in Foren gesucht, jedoch nichts passendes gefunden.
    Es muss folgendermaßen gehen:
    Ein Theard (das Hauptprogramm) wird durch das klicken einer Taste gestartet. Ein weiterer Thread wird geöffnet (KontrollThread)
    dann gibt es im Hauptprogramm eine Schleife:

    while (KontrollThread != StopPlaying)
    {
    Mache Ausgabe;
    }

    es soll in meiner Oberfläche die Taste "Ausgabe abbrechen" geben. Wie richtet man einen zweiten Thread ein, der die onAusgabeAbbrechen vom Hauptfenster abfängt?
    Gibt es Standard-Funktionen, denn sowas kommt ja häufiger vor.
    Danke für jede Antwort
    Simon



  • ähhh... wenn ich dich richtig verstanden habe, dann mach es doch lieber so:

    lasse deine hauptanwendung das abbrechen signal wie gewohnt kontrollieren und lasse den zusätzlichen thread die rechenarbeit machen....



  • Danke für die Antwort.
    Gut geht genauso. Später (in weiter Zukunft) wird alles sowieso zu einer Dll kompaliert, wo es dann einmal die Funktion "Ausgabe" und "StopPlaying" gibt. Nur wie sorgt man dafür, dass man die while-Schleife, durch "StopPlaying" unterbricht ? Man muss dafür doch einen Parameter von dem StopPlaying Thread zur while Schleife bringen und der muss auch immer aktualisiert werden.

    Einzige Idee, die ich dafür habe ist folgende:
    man macht ein bStop und einen p_bStop.
    ruft Ausgabe mit Ausgabe(p_bStop...) auf.
    und in Ausgabe macht man
    void Ausgabe(p_bStop)
    {
    while (p_bStop != true)
    {
    sende Daten
    }
    }

    void Stop()
    {
    bool bStop
    Ausgabe(p_bStop)
    if (ButtonAusgabeStop == true)

    Nun bleibt aber noch das große Problem:
    Wie rufe ich dann eben die Ausgabe-Funktion auf, so dass diese einen eigenen thread hat?
    MfG Simon



  • Also so wird das nichts. Der Funktionkopf Ausgabe für der While-Schleife muss einem Standard entsprechen, damit Du mit dieser Funktion einen Thread starten kannst. Um einen Thread wieder zu beenden gibt es auch eine Funktion.
    Such hier mal im Forum und in der FAQ nach "Thread" - da gibt es ziemlich gute Erklärungen dazu, die auch Dein Problem abdecken.


Anmelden zum Antworten