2012-05-04 2 views
6

У меня есть приложение, которое недавно разбилось, и я смог получить его столбец, используя EurekaLog. Что я заметил, так это то, что была завершена финализация подразделения, но приложение не закрылось и продолжало работать.Когда используется метод окончательной доработки в модуле?

AFAIK, разделы завершения вызывается только в том случае, когда приложение завершается. Но это было не так, как со мной.

Кто-нибудь знает, почему был вызван метод финализации, когда это не было сделано?

EDIT

Это приложение не использует никаких библиотек DLL или ВР.

EDIT2

Возможно ли, что нить после завершения можно назвать завершение?

+0

комментировать строку, если проблема остается, если это так, то ваша проблема находится в другом месте, в противном случае вам нужно предоставить дополнительную информацию о функции, обычно эврика права ... – ComputerSaysNo

+0

Я пытаюсь воспроизвести проблема почти 2 часа, и я до сих пор ничего не получил. –

+1

Если вы не можете воспроизвести его, то этот вопрос довольно бессмыслен. «финализация» происходит во время завершения. –

ответ

4

Заключения вызывается в двух местах. Наиболее распространенным является то, когда приложение завершается. Но их также можно вызывать, когда выгружается DLL (или BPL), что происходит автоматически, когда приложение завершается, но может также происходить в середине запущенной программы, если код явно выгружает его.

Возможно ли, что это происходит?

+0

Nops. Это приложение не использует никаких библиотек dll или bpls. –

+6

Затем либо вы получите сообщение об ошибке в отчете EurekaLog, либо ваш код следует за коррумпированным указателем функции где-то и заканчивается в процедуре финализации. Потому что вы никогда не окажетесь там законно, если модуль модуля не будет выгружен. –

Смежные вопросы