gpt4 book ai didi

forms - 在 Delphi 中对于模态表单使用 Free 而不是 Release 安全吗?

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

Delphi 在线帮助说应该使用 Release 来从内存中删除表单。然而,在许多模态形式的例子中,我看到了这种结构:

MyForm := TMyForm.Create(nil);
try
MyForm.ShowModal;
finally
MyForm.Free;
end;

Free 是销毁模态表单的安全方法吗?正如我在 ShowModal 的源代码中看到的,Application.HandleMessage 将被调用,直到 ModalResult 不为 0。这就是 Free 不能干扰待处理窗口消息的原因吗?

最佳答案

是的,在 ShowModal 调用后使用 Free 是安全的。

需要使用Release的情况是当您处于事件处理程序中间时(例如,OnClick),在事件之后进行进一步处理将必须访问该表格。在这种情况下,调用 Release 而是发布一条 CM_RELEASE 消息,该消息不会释放事件,直到事件处理程序完成并且控制权返回到消息泵 (ProcessMessages /Application.Run)。 ShowModal 在事件处理程序完成并且控制使其备份堆栈之前不会返回,因此之后调用 Free 实际上与 CM_RELEASE 消息将被处理,否则。

关于forms - 在 Delphi 中对于模态表单使用 Free 而不是 Release 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/916843/

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