gpt4 book ai didi

delphi - Delphi中的延迟执行

转载 作者:行者123 更新时间:2023-12-03 15:15:25 27 4
gpt4 key购买 nike

是否可以在调用程序结束后延迟启动程序?

procedure StartLoop;
begin
DoSomething;
end;

procedure FormCreate(...);
begin
if ParamStr(1)='start' then StartLoop;
end;

StartLoop将在FormCreate内部调用,FormCreate将等待,不仅阻止FormCreate本身的进一步执行,还阻止其后执行的进一步程序(FormShow等)和form在 StartLoop 结束之前不会显示。

我需要等到 FormCreate 结束,然后运行 ​​StartLoop(不使用线程)。

最佳答案

如果您使用的是 10.2 Tokyo 或更高版本,则可以使用 TThread.ForceQueue() :

procedure TMyForm.FormCreate(Sender: TObject);
begin
if ParamStr(1) = 'start' then
TThread.ForceQueue(nil, StartLoop);
end;

否则,您可以使用 PostMessage() 代替:

const
WM_STARTLOOP = WM_USER + 1;

procedure TMyForm.FormCreate(Sender: TObject);
begin
if ParamStr(1) = 'start' then
PostMessage(Handle, WM_STARTLOOP, 0, 0);
end;

procedure TMyForm.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_STARTLOOP then
StartLoop
else
inherited;
end;

关于delphi - Delphi中的延迟执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53755394/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com