Допустим есть некий поток:
Код:
unit MVCThread;
interface
uses
Classes;
type
TMVCCreateStruct = record
port:string;
baudrate:Integer;
end;
TMVCThread = class(TThread)
private
FSomeProp: Boolean;
procedure SyncProc;
protected
procedure Execute; override;
public
property SomeProp:Boolean read FSomeProp write FSomeProp;
end;
implementation
{
Important: Methods and properties of objects in visual components can only be
used in a method called using Synchronize, for example,
Synchronize(UpdateCaption);
and UpdateCaption could look like,
procedure TMVCThread.UpdateCaption;
begin
Form1.Caption := 'Updated in a thread';
end;
or
Synchronize(
procedure
begin
Form1.Caption := 'Updated in thread via an anonymous method'
end
)
);
where an anonymous method is passed.
Similarly, the developer can call the Queue method with similar parameters as
above, instead passing another TThread class as the first parameter, putting
the calling thread in a queue with the other thread.
}
{ TMVCThread }
procedure TMVCThread.Execute;
begin
{ Place thread code here }
while not Terminated do
begin
Sleep(100);
if FSomeProp then
Synchronize(SyncProc);
end;
end;
procedure TMVCThread.SyncProc;
begin
//код
end;
end.
Свойство
SomeProp буду устанавливать из основного потока приложения. Вопрос: насколько это безопасно, и правильно ли вообще так писать?