我有一个 .NET C# / C++ 应用程序,它在线程中使用对exit(0)
(from <stdlib.h>
) 的调用来终止。
奇怪的是,在某些情况下,托管对象的终结器在调用之后立即被调用exit
,而在其他情况下,它们根本不会被调用。
情况非常确定 - 应用程序在其生命周期内从外部插件 dll(用非托管 C 编写)调用一些方法。
如果我使用 dll A,则始终调用终结器。
如果我使用 dll B,则永远不会调用终结器。
在 exit(0) 调用的情况下,终结器的预期行为是什么?(如果有任何预期的 - 和记录的 - 行为)
对外部 dll 的调用能否更改一些可能影响进程终止方式的全局设置?