6

最近クラッシュしたアプリがあり、EurekaLogを使用してそのコールスタックを取得できました。私が気付いたのは、ユニットのファイナライズが呼び出されたが、アプリが閉じず、動作し続けたことです。

AFAIK、ファイナライズセクションは、アプリが終了したときにのみ呼び出されます。しかし、それは私に起こったことではありませんでした。

ファイナライズメソッドが呼び出されるはずがなかったのに、なぜ呼び出されたのか誰かが知っていますか?

編集

このアプリはdllやbplsを使用していません。

EDIT2

終了したスレッドがファイナライズを呼び出す可能性はありますか?

4

1 に答える 1

5

ファイナライズは2か所で呼び出されます。最も一般的なのは、アプリケーションが終了したときです。ただし、DLL(またはBPL)がアンロードされたときに呼び出すこともできます。これは、アプリケーションの終了時に自動的に発生しますが、コードが明示的にアンロードした場合は、実行中のプログラムの途中で発生することもあります。

それが起こっている可能性はありますか?

于 2012-05-04T18:32:36.027 に答える