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