Einzelnen Beitrag anzeigen

Benutzerbild von seim
seim

Registriert seit: 11. Nov 2007
83 Beiträge
 
#1

Variable wird im Thread verändert -> auslesen

  Alt 28. Apr 2009, 19:37
Hi,

ich habe grad folgendes Problem:

Also es wird im Hauptthread eine Procedure ausgeführt innerhalb dieser Procedure wird eine Aktion in einem Thread angestoßen:

(pseudo-code)
Delphi-Quellcode:
procedure Exec(Befehl: string);
begin

Plink.MacheBefehl(Befehl); //Läuft in nem Thread ab

Sleep(5000); //Das soll dem Thread die Zeit geben sein Ding zu erledigen.

Ergebnis := PlinkUnit.Befehlrückgabe; //TStringList
end;
So was jetzt passiert ist, dass im "Ergebnis" alles landet was VOR dem Befehl bereits darin stand - der neu ausgeführte Befehl wird nicht übernommen bzw. dessen Rückgabe.

In einer 2. Procedure:
Delphi-Quellcode:
procedure ShowMe;
begin
Ergebnis := PlinkUnit.Befehlrückgabe;
end;
die nach der oberen ausgeführt wird (per Button) steht der Befehl dann aber plötzlich drin!

Also ich habe jetzt folgende zwei Vermutungen:

1. Möglichkeit:
- Exec wird ausgeführt
- Variable "Befehlrückgabe" wird gecached (warum auch immer)
- Code der Procedure Exec wird ausgeführt
-- innerhalb der Procedure wird dann die vorher zwischengespeicherte Variable ausgelesen und vorher war der Befehl noch nicht drin..

2. Möglichkeit:
- Exec wird ausgeführt
- Code der Procedure Exec wird ausgeführt (Befehlrückgabe geschrieben)
- Erst danach wird die betreffende Funktion ausgeführt die überhaupt die Rückgabe von Plink ausliest
- Befehlrückgabe wird neu gesetzt


So die Frage an euch.. woran kann das normalerweise liegen. Ich glaube nicht, dass eine Variable für die Procedure zwischengespeichert wird oder?

lg
Angehängte Dateien
Dateityp: zip sshtest2_105.zip (486,3 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat