AGB  ·  Datenschutz  ·  Impressum  







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

Thread von "aussen" abbrechen

Ein Thema von DelTurbo · begonnen am 28. Feb 2010 · letzter Beitrag vom 23. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#1

Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 11:45
Hi,

mein programm lief nun ca. 5 tage durch. Leider blieben in der zeit 2 Threads "stehen". Es wurden in dieser zeit ca. 2.500 thread erzeugt und beendet. Maximal liefen 73 auf einmal. Ich habe keine ahnung wo die sich die 2 rumtreiben. Es ist leider auch sehr schwer nachzuvollziehen. Mir fällt leider überhauptnix ein wie ich das reproduzieren könnte.

So, nun zur frage. Kann ich die Threads irgendwie von aussen abbrechen bzw. killen? Ich erzeuge die threads wie mir hier geraten wurde wie folgt.

Delphi-Quellcode:
Thread[i].ThreadHandle:=BeginThread(nil, 0, @Chan,@Thread[i].MyID, 0, Thread[i].ThreadID);
if Thread[i].ThreadHandle<>0 then CloseHandle(Thread[i].ThreadHandle);
Kann ich danach überhaupt nochwas mit dem Handle anfangen? bzw. ihn darüber abbrechen? Wenn ja wäre es ja einfach dort eine art Watchdog zu bauen.

Vielen dank im voraus
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 11:53
Hi schau mal MSDN-Library durchsuchenTerminateThread
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 12:34
Ist denn das ThreadHandle überhaupt noch gültig?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 12:44
Wenn du zuerst den Thread terminierst und dann das Handle schließt schon
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 12:50
Also von dem beispiel wie es oben steht, ist das handle wohl nichtmehr gültig. Richtig? Wie komme ich sonstnoch an den Thread ran?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 12:54


Delphi-Quellcode:
Thread[i].ThreadHandle:=BeginThread(nil, 0, @Chan,@Thread[i].MyID, 0, Thread[i].ThreadID);

if Thread[i].ThreadHandle<>0 then
begin
  TerminateThread(Thread[i].ThreadHandle,0);
  CloseHandle(Thread[i].ThreadHandle);
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#7

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 13:05
Erstmal danke für deine hilfe. Also müsste ich das Close oben raushohlen. Die frage ist nun, darf der Thread selber, wenn er fertig ist, das Close ausführen oder scheppert das?
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Thread von "aussen" abbrechen

  Alt 28. Feb 2010, 20:10
Genau genommen brauchst Du das Handle gar nicht, wenn Du die ThreadID hast und kannst es also prinzipiell direkt nach Threaderstellung schließen. Wenn Du dann wirklich einen Thread killen willst, holst Du Dir mit OpenThread einfach ein neues Handle zum Terminieren. Die Gefahr Handles zu leaken ist dabei viel geringer.

Generell wäre der bessere Weg aber die Ursache zu finden, wieso Threads "stehen bleiben".
Fridolin Walther
"While Mr. Kim, by virtue of youth and naiveté, has fallen prey to the inexplicable need for human contact, let me step in and assure you that my research will go on uninterrupted, and that social relationships will continue to baffle and repulse me."
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#9

Re: Thread von "aussen" abbrechen

  Alt 1. Mär 2010, 13:52
Zitat von Fridolin Walther:
Generell wäre der bessere Weg aber die Ursache zu finden, wieso Threads "stehen bleiben".
Leider ist das genau mein prob. Ich weiss es nicht. Das problem ist halt das es erst nach tagen auftritt. Ich habe auch madcollection mitlaufen. Der meldet leider auchnix.

Das mit dem OpenThread werde ich mir nachher mal ansehen. Wenn ich dazu noch fragen haben sollte, poste ich einfach

Danke
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#10

Re: Thread von "aussen" abbrechen

  Alt 1. Mär 2010, 14:05
Excepton in Thread auslösen ist vielleicht auch für dich interessant.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  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 23:26 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