AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi TThread - Variable zur Laufzeit ändern
Thema durchsuchen
Ansicht
Themen-Optionen

TThread - Variable zur Laufzeit ändern

Ein Thema von Unplugged · begonnen am 12. Okt 2004 · letzter Beitrag vom 13. Okt 2004
Antwort Antwort
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#1

TThread - Variable zur Laufzeit ändern

  Alt 12. Okt 2004, 20:55
Hallo,

zu meinem Problem. Je nach Anfrage starte ich einen Thread für eine Remote-Administrator-Sitzung. Funktioniert auch problemlos, nur möchte ich jetzt gerne mehr als eine Sitzung gleichzeitig erlauben.

Eine Variable setzen kann ich ja, wenn ich TThread.Variable := wert; setze.

Aber was passiert jetzt, wenn der Thread mehrfach gestartet ist? Weil letztlich soll ja nur die lokale Variable des Thread gesetzt werden, der für den User erstellt wurde.
Und muss ich den Thread erst pausieren, bevor ich die Variable setzen kann?

Danke und Gruß

StuffM
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TThread - Variable zur Laufzeit ändern

  Alt 12. Okt 2004, 21:15
Du musst das ganze in eine CriticalSection setzen um sicherzustellen das der Thread nicht auch gerade auf die Variable zugreift. Ansonsten ist es egal wieviel Threads du laufen hast da du ja Threadinstanze.Variable setzt und somit auch die Werte in jedem Thread getrennt sind.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: TThread - Variable zur Laufzeit ändern

  Alt 12. Okt 2004, 21:23
ich verstehe nicht ganz, wie ich die Instanz des Threads unterscheiden soll, weil der Aufruf erfolgt wiefolgt:

Delphi-Quellcode:
   with TMyThread.Create(True) do
   begin
     FreeOnTerminate := True;
     Resume;
   end;
Wenn ich das mehrfach aufrufe, ist laut nem kleinen Test von mir, der Thread auch mehrfach gestartet. Aber da könnte ich ihn ja nicht unterscheiden?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: TThread - Variable zur Laufzeit ändern

  Alt 12. Okt 2004, 21:41
Hi StuffMasterz,

in dem Fall musst du ein array of TMyThread erstellen, und die Ergebnisse des Creates ins array speichern.

also z.B.:
Delphi-Quellcode:
var
  MeinArray: array of TMyThread;
begin
  SetLength(MeinArray, Length(MeinArray)+1);
  MeinArray[Length(MeinArray)-1] := TMyThread.Create(True);
  with MeinArray[Length(MeinArray)-1] do
  begin
    FreeOnTerminate := True;
    Resume;
  end;
Anschließend kannst du auch auf die einzelnen Threads zugreifen. Die Behandlung des Arrays mit den einzelnen Threadelementen musst du aber selbst vornehmen.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Unplugged

Registriert seit: 14. Apr 2004
Ort: Leipzig
125 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: TThread - Variable zur Laufzeit ändern

  Alt 13. Okt 2004, 05:14
Hätt ich eigentlich auch selbst drauf kommen können :roll:

Danke
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:14 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