Hallo,
ich hoffe, der Titel ist treffend. Ich habe eine Variable vom Typ String, die sowohl innerhalb eines Threads als auch außerhalb des Threads verändert werden kann. Die Wahrscheinlichkeit ist wohl sehr gering, aber ich befürchte, dass es theoretisch zu Problemen kommen könnte, wenn ich versuche, den Wert dieser Variablen gleichzeitig innerhalb des Threads und außerhalb des Threads zu ändern.
Hier mein Lösungsversuch:
Delphi-Quellcode:
Var ThreadString:AnsiString;
TreadString_Locked:Boolean;
//Innerhalb des Threads
Begin
...
ThreadString_Locked:=True;
ThreadString:='Neuer Wert';
ThreadString_Locked:=False;
...
End;
//außerhalb des Threads:
Function SetThreadString(s:AnsiString):Boolean;
Var TimeOut:Integer;
Begin
TimeOut:=0;
Repeat
IF not(ThreadString_Locked) then
BEGIN
ThreadString:=s;
Result:=True;
END ELSE
Result:=False;
Inc(TimeOut);
Until TimeOut>1000;
End;
Solange der Wert innerhalb des Threads durch die Variable ThreadString_Locked gesperrt ist, kann der Variablen außerhalb des Threads nichts zugewiesen werden.
Ist dieser Ansatz sinnvoll bzw., gibt es eine einfachere oder besser Lösung?
Gruß