Вот на более простом примере (код взят из примера multithreading в Lazarus плюс добавлен показ формы):
- Код: Выделить всё
procedure TMyThread.Execute;
var
newStatus : string;
begin
fStatusText := 'TMyThread Starting...';
Synchronize(@Showstatus);
fStatusText := 'TMyThread Running...';
while (not Terminated) and (true {any condition required}) do begin
//here goes the code of the main thread loop
newStatus:='TMyThread Time: '+FormatDateTime('YYYY-MM-DD HH:NN:SS',Now);
{********************************}
{Показываем модальную форму}
with TForm.CreateNew(Form1,0) do
ShowModal;
{********************************}
if NewStatus <> fStatusText then begin
fStatusText := newStatus;
Synchronize(@Showstatus);
end;
end;
end;
В Delphi такой же код работает без проблем. Что не так, как добиться нормальной работы?