Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TThread objekt finden mit ThreadID (https://www.delphipraxis.net/92078-tthread-objekt-finden-mit-threadid.html)

bart57 14. Mai 2007 10:53


TThread objekt finden mit ThreadID
 
Hallo,

wie kann ich das TThread objekt finden wenn ich nur die ThreadID habe ?


Danke im Voraus.

hoika 14. Mai 2007 10:55

Re: TThread objekt finden mit ThreadID
 
Hallo,

warum packst die deine erzeugten Threads nicht in eine
zusätzliche Liste ?
Dann kannst du die ihn dort suchen.


Heiko

bart57 14. Mai 2007 11:10

Re: TThread objekt finden mit ThreadID
 
???

Udontknow 14. Mai 2007 11:12

Re: TThread objekt finden mit ThreadID
 
Hallo!

Geht es um nicht selber erzeugte Threads? Ansonsten hat Hoika ja recht: Wenn du einen Thread erstellst, schreibst du die Objektvariable in eine TObjectlist-Instanz...

Cu,
UDontknow

bart57 14. Mai 2007 11:41

Re: TThread objekt finden mit ThreadID
 
Ich habe nur die ThreadID un möchte gern damit das TThread-Objekt finden.

Damke

hoika 14. Mai 2007 13:09

Re: TThread objekt finden mit ThreadID
 
Hallo,

warum hast du nur die ID ?
Vielleicht von einem anderen Programm ?

Dann bekommst du natürlich kein TThread-Objekt,
wie soll das auch gehen.
Falls das andere Programm z.B. c++ ist, gibt es dort sowas nicht,
TThread kapselt ja nur die API-Methoden
und ein fremdes das Handle unterzuschieben, geht afaik nicht.


Heiko

bart57 14. Mai 2007 13:43

Re: TThread objekt finden mit ThreadID
 
ich habe eine Client-Server Anwendung.
Im Client habe ich die ThreadId.
Der Benutzer kann/soll eine bestimmte Server-Thread anhand der ThreadId beenden können.

Im Server konnte ich ja die Procedure TerminateThread benutzen, aber ich möchte
gern das TThread-Objekt raus gewinnen und dann TThread.Terminate benutzen !



Danke

hoika 14. Mai 2007 13:53

Re: TThread objekt finden mit ThreadID
 
Hallo,

das geht aber so nicht.
Da könnte ja jeder mit ner Thread-ID (da sich wohl auch ermitteln lässt),
den Thread eines anderen Programmes beenden.

Du musst schon per Kommunikation machen,
der Client teilt dem Server die ID mit,
und der Server beendet den Thread.


Heiko

bart57 14. Mai 2007 13:57

Re: TThread objekt finden mit ThreadID
 
Dass ist mir ja alles klaar, ich mache es ja auch so ich schick im Server die ThreadID die im Server zu Beenden ist.

Aber ich was nicht wie aus der ThreadID das TThread bekommen....



Danke

sh17 14. Mai 2007 13:58

Re: TThread objekt finden mit ThreadID
 
Zitat:

Zitat von hoika
Da könnte ja jeder mit ner Thread-ID (da sich wohl auch ermitteln lässt),
den Thread eines anderen Programmes beenden.

Da würde ich mal gegenhalten. z.B. der Prozess-Explorer von MS SysInternals kann so was. Der zeigt alle Threads eines Prozesses an und kann jeden einzeln killen.

hoika 14. Mai 2007 14:50

Re: TThread objekt finden mit ThreadID
 
Hallo,

1. geht das nur als Admin,
2. es geht hier nicht um API Thread killen, sondern per TThread

Und nun zum Server.
Packe im Server-Prozess alle erzeugten Threads in eine (TObjectList)
und suche das TThread dann.

Anderes geht es afaik nicht.

Wenn ich z.B. folgendes habe.
Delphi-Quellcode:
procedure TForm1.Add(theList: TList);
var
  MyClass: TMyClass;
begin
  MyClass:= TMyClass.Create;
  theList.Add(MyClass);
end;

procedure TForm1.OnButtonClick;
begin
  Add(List); // List ist hier mal Form-Varaible
end;
,komme ich nur noch über die Liste an das MyClass.



Heiko

bart57 15. Mai 2007 07:53

Re: TThread objekt finden mit ThreadID
 
Danke,

aber dass helft mich glaube ich nicht so....
Wie kann ich in der Liste das TThread-Objekt finden wenn ich nur die ThreadID habe ?

CCRDude 15. Mai 2007 07:59

Re: TThread objekt finden mit ThreadID
 
1. RTFM, TThread.ThreadID
2. Überdenke das Kommunikationsprotokoll zwischen Client und Server noch einmal, wenn Du nichts besseres hast.

bart57 15. Mai 2007 09:31

Re: TThread objekt finden mit ThreadID
 
Was ist RTFM?

hoika 15. Mai 2007 09:45

Re: TThread objekt finden mit ThreadID
 
RTM

read the fucking manual ;)
ThreadId ist eine Variable in TThread

Das Eintragen in eine TObjectList solltest zu alleine schaffen
und for-Schleife, um die Liste zu durchsuchen auch, oder ?


Heiko

bart57 15. Mai 2007 09:52

Re: TThread objekt finden mit ThreadID
 
Leider nicht...

Es ist mir gar nicht klaar wie Sie es machen wollen... :-( Sorry



Danke !

hoika 15. Mai 2007 10:08

Re: TThread objekt finden mit ThreadID
 
Hallo,

dein Client fordert vom Server ja eine Dienstleistung.
Der Server erzeugt einen Thread (TThread) und gibt die Thread-Id an den Client weiter.

Der Server zeugt den Thread aber nicht nur,
sondern packt ihn in eine Liste.
Die Liste (ThreadList) ist "global" für den Server.

Delphi-Quellcode:
var
  ThreadList: TList; // oder was immer für eine Liste

procedure CreateMyThread;
var
  MyThread: TMyThread;
begin
  MyThread:= TMyThread.Create;

  ThreadList.Add(MyThread);
end;
Diese ThreadList musst du führen,
wird ein Thread beendet, fliegt er aus der Liste raus.

Zum Suchen dann einfahc ne Schleife über "ThreadList".


Heiko

bart57 15. Mai 2007 10:49

Re: TThread objekt finden mit ThreadID
 
Danke!!!

Luckie 15. Mai 2007 11:02

Re: TThread objekt finden mit ThreadID
 
Siehe dazu auch: http://www.michael-puff.de/Developer...er_Klassen.php


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz