tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
1611
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    Hallo zusammen!

    Könnt ihr mir weiter helfen

    Ich muss einen Thread beenden wie mache ich das!

    Besser gesagt, was schreibe ich in die Übergabeliste!

    Ich versteht das irgendwie nicht!° Tut mir leid

    bitte um Hilfe

    vs6c++, mfc anwendung
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.500
    Hi
    beende den Thread doch einfach in sich selber drinnen mit return
    wie eine normale funktion.

    Oder musst du den thread von aussen (einem anderen Programmteil) aus beenden?
     

  3. #3
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    Ich muss den Thread von einen anderm Thread auslösen. Da in dem Thread den ich beenden möchte eine endlosschleife läuft! Also da gibts eigentlich kein return!

    Tipp parat?
     

  4. #4
    Avatar von FBIagent
    FBIagent FBIagent ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    281
    Vieleicht hilft dir ein WINAPI event.
    Schau mal nach CreateEvent(), SetEvent() etc.

    Best wishes
    FBIagent
     
    Don't blame people for bugs. Work together to make things better. No
    finger pointing! Not ever! A good rule is to Never Assume An Attack.
    If you find yourself getting angry, assume it's a misunderstanding, not an
    attack.

  5. #5
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    Aber wie soll ich mit diesen Funktionen sagen, das der eine Thread zu gehen muss.

    Mein Problem noch mal genauer beschrieben, vielleicht hilft es ja!
    Also ich habe einen Server da wähle ich mich ein! Nach einem Zeiintervall trenne ich die Verbindung um mich mit einer andern Position neu einzuwählen. Die Trennung muss erfolgen (erläute ich nicht genauer) hat auf jeden fall mit dem vom Server bereitgestellten Daten (Positionsabhängig zu tun)

    Dies erfolgt in einer endlosschleife. Ind der Schleife werden dann Thread angestoßen, die sich wenn sie fertig sind auch wieder alleien beenden! Doch nun möchte ich über einen Button auf dem Dialog den Thread beenden, von dem alles ausgeht! Wie löse ich das am besten. Mein Programm funktionerirt einwandfrei, nur dass ich es leider über den Button nicht beendern kann!

    Bitte um hilfe und rat!

    Bevor ich es vergess: AN ALLE EINEN SCHÖNEN NIKOLAUS TAG!
     

  6. #6
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Hallo,

    ein Thread sollte immer die Chance haben, sich selbst zu beenden.

    statt
    Code cpp:
    1
    2
    3
    4
    
    while( true )
    {
        // ...
    }
    schreibt am also besser
    Code cpp:
    1
    2
    3
    4
    
    while( abbruchbedingung == false )
    {
        // ...
    }
    Eine Abbruchbedingung ist im einfachsten Fall eine boolsche Variable, die vor dem Schleifenbeginn auf "true" gesetzt
    wird und bei Bedarf außerhalb des Threads auf "false" gesetzt wird. Diese Variable muss außerhalb des Threads
    definiert sein. Innerhalb des Threads erlangt man mit Hilfe des Thread-Parameters Zugriff darauf. Damit kann ja eine
    Datenstruktur o.ä. übergeben werden, über die dann der Zugriff ermöglicht wird.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  7. #7
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    Mit dieser Variante habe ich es gerade gemacht! Ist aber nicht gerade elegant oder?
     

  8. #8
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Winner Beitrag anzeigen
    Ist aber nicht gerade elegant oder?
    Ich finde die Lösung ok. Irgendwie muss man dem Thread ja mitteilen, dass er sich beenden kann. Komplizierte Konstrukte mit Events o.ä. müssen da nicht unbedingt sein.

    Gruß
    MCoder
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  9. #9
    Winner Winner ist offline Mitglied Gold
    Registriert seit
    May 2007
    Beiträge
    218
    Hallo MCoder!

    Ich hab das ganze jetzt mit TerminateThread gemacht! Tut es genauso! Muss dabei mich noch nicht mal um die bool Variable kümmern! Also eine Zeile die mich mal wieder nervern gekostet hat!

    Aber besten dank und find den Nikolaus




    Nikolaus
     

  10. #10
    MCoder MCoder ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jul 2005
    Ort
    München
    Beiträge
    2.448
    Zitat Zitat von Winner Beitrag anzeigen
    Ich hab das ganze jetzt mit TerminateThread gemacht!
    Sozusagen auf die harte Tour.
     
    "The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
    --- Larry Wall

  11. #11
    Avatar von FBIagent
    FBIagent FBIagent ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    281
    Was man jedoch bei TerminateThread() beachten sollte ist, das auf
    Windows Server 2003 und Windows 2000/XP der initial stack nicht freigegeben wird und
    so ein resource leak entsteht. Das sind aber nicht die einzigsten Sachen die man da beachten sollte.

    Da gibt es glaube ich auch nen workaround drum rum, aber für die zwecke denke ich mal
    wird die Methode wie MCoder schon mit dem bool, voll und ganz reichen. Zu dem
    Kommentar, das die boolean Variante nicht sehr Elegant sei: TerminateThread() um einiges
    weniger

    Wieso,weshalb und warum man TerminateThread() nur in seltenden ausnahmen benutzen sollte kannst du hier bei den Remarks nachlesen:
    http://msdn2.microsoft.com/en-us/library/ms686717.aspx

    Best wishes
    FBIagent
    Geändert von FBIagent (07.12.07 um 00:20 Uhr)
     
    Don't blame people for bugs. Work together to make things better. No
    finger pointing! Not ever! A good rule is to Never Assume An Attack.
    If you find yourself getting angry, assume it's a misunderstanding, not an
    attack.

Ähnliche Themen

  1. Thread Hilfe, wie beenden?
    Von Fridulin im Forum .NET Archiv
    Antworten: 6
    Letzter Beitrag: 17.05.10, 11:32
  2. Thread Beenden?
    Von jiim im Forum Java Grundlagen
    Antworten: 6
    Letzter Beitrag: 07.02.09, 16:49
  3. Thread beenden
    Von Raabun im Forum .NET Café
    Antworten: 7
    Letzter Beitrag: 20.01.09, 15:38
  4. Thread beenden
    Von Hillkorn im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 16.01.08, 21:08
  5. Thread beenden
    Von MrPHP im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 12.05.04, 16:13