什么时候单位的终结方法叫?

Raf*_*cci 6 delphi delphi-2010

我有一个最近崩溃的应用程序,我能够使用EurekaLog获取其callstack.我注意到的是一个单元定稿被调用,但应用程序没有关闭并继续工作.

AFAIK,终结部分仅在应用程序终止时调用.但那不是发生在我身上的事.

有没有人知道为什么在不应该这样做时调用终结方法?

编辑

这个程序不使用任何dll或bpls.

EDIT2

完成时线程是否可能调用finalization?

Mas*_*ler 5

最终确定在两个地方进行.最常见的是应用程序终止时.但是当卸载DLL(或BPL)时也可以调用它们,这在应用程序终止时自动发生,但如果代码明确地卸载它,也可能在程序运行的中间发生.

是不是有可能发生了什么?

  • 然后,您在EurekaLog报告本身中遇到错误,或者您的代码在某处跟踪了损坏的函数指针,最终结束于终结例程.因为你永远不会合法地在那里结束,除非该单元的模块即将被卸载. (6认同)