Naj*_*jem 4 delphi events destructor
看完这个,我想知道什么是下一个代码问题:
procedure TForm1.Button5Click(Sender: TObject);
begin
Button5.free;
end;
Run Code Online (Sandbox Code Playgroud)
在该例程上放置一个断点并检查调用堆栈.从事件处理程序返回后,仍然会运行Button5的代码,以及其他需要Button5仍然存在的VCL代码.如果你从它下面删除对象,你很可能会以某种方式破坏内存或引发异常.
如果你想这样做,正确的方法是调用PostMessage并向表单发布一条消息,最终在当前代码运行完毕后安全地释放对象.