AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie beendet man einen thread...

Ein Thema von Meflin · begonnen am 3. Feb 2004 · letzter Beitrag vom 3. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#1

Wie beendet man einen thread...

  Alt 3. Feb 2004, 16:58
... den man mit beginthread gestartet hat? ich wollts so machen: ich erstelle also den thread. in der threadfuntion überprüf ich in allen schleifen, ob eine variable den wert stop hat, wenn sie das hat, rufe ich endthread auf und dachte dass sollte es dann sein. aber... pustekuchen! die threads laufen frölich weiter! Ich verwende wohlgemerkt NICHT das vcl thread object!

*MFG*
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 16:59
Schau mal auf Luckies Homepage, da sollte ein nonVCL Thread Tutorial zu finden sein

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#3

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:02
ja, das hab ich hier auch rumligen, hier steht ja auch dass es rein theoretisch mit endthread gehen sollte.. tuts aber irgendwie nicht?! dauert dass solange, dass miene threads bis dahin sowieso fertig sind oder was???
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:02
Schau dir mal im PSDK TerminateThread an.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#5

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:03
für terminatethread brauch ich das handle des threads. wie krieg ich das aus dem thread heraus heraus?
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:14
Das ist die Rückgabe von BeginThread
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:16
äh moment mal: man nimmt na nicht die ThreadID, sondern das Handle?
*ganzunschuldigpfeiff*
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:19
Nicht das Handle, sondern ein Handle . Jeder Thread hat eine eindeutige ID. Ein Handle stellt nun eine Art Zugriff auf diesen Thread dar. Es können belienig viele dieser Zugriffshandles angefordert werden (na ja, natürlich begrenzt durch die max. Anzahl Handles, die Windows verwalten kann), eines wird dir zur Verfügung gestellt, wenn du den Thread erstellst.

Grundsätzlich sollte man nur wissen, dass man jedes Handle, das man selbst angefordert hat, auch wieder schließen soll.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#9

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:22
Also ich erstell den thread ja mit
Handle := beginthread(...,ThreadId);
zum beenden soll ich also den Handle-Wert nehmen, nicht die ThreadID?
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Wie beendet man einen thread...

  Alt 3. Feb 2004, 17:33
Ja. Kuck dir einfach mal im PSDK oder beim MSDN die Beschreibung von TerminateThread an.

Allerdings solltest du dir im klaren sein, dass du so Speicherlecks u. ä. verursachen kannst.
EndThread, das ja auf ExitThread basiert, bittet den Thread, zu verschwinden, bietet ihm allerdings noch Zeit, sein Zueg zu packen, sprich Dateien und andere Handles zu schließen, Speicher freizugebenm etc. Deshalb ist der Thread sofort nach dem Beenden nicht unbedingt auch wirklich beendet.
Mit TerminateThread setzt du dem Thread quasi eine Knarre an den Kopf und schmeißt ihn raus. Zeit zu packen hat er dann halt nicht.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz