表格.发布 + NIL

2024-01-03

如果在使用表单后调用 Form.Release,它将释放所有相关内存,但不会将表单变量设置为 nil。

if not assigned (Form1) then
  begin
    Application.CreateForm(Tform1, Form1);
    try
      // Do something
    finally
      Form1.Release
    end;
  end;

为了能够再次调用相同的代码,Form1 必须在某个时刻设置为 nil。从发布的描述来看我不能做

Form1 := nil;

就在Release 之后,因为Release 过程将在调用之后、窗体实际释放之前直接返回。我无法检测 Form.Release 何时完成以将表单 var 设置为 nil。

做这个的最好方式是什么?


把线

  Form1 := nil;  

就在调用 Release 之后。

Release 只是将 CM_RELEASE 消息发布到 Form,这允许 Form 在处理 CM_RELEASE 消息之前完成其队列(事件处理程序)中的内容,这意味着通常只调用 Free。
因此,在调用 Release 之后,您不应该假设 Form 变量仍然指向有效的 Form,从而将 nil 放入该变量中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

表格.发布 + NIL 的相关文章

随机推荐