ShowModal会中断调用者,直到那个窗口结束.可以使用PostMessage.const
  MyMessage=WM_USER+1000;...
protected
  procedure DoTask(var Message:TMessage); message MyMessage;
public
  ...
end;...
PostMessage(Handle,WM_MyMessage,0,0);
Form2.ShowModal;
end;procedure TForm1.DoTask(var Message:TMessage);
begin
...//do your task here
PostMessage(Form2.Handle,WM_CLOSE,0,0);
end;