gpt4 book ai didi

c# - .NET - 终结器和退出(0)

转载 作者:太空狗 更新时间:2023-10-29 20:01:28 24 4
gpt4 key购买 nike

我有一个 .NET C#/C++ 应用程序,它调用了 exit(0) (来自 <stdlib.h> )在一个线程中以终止。

奇怪的是,在某些情况下,托管对象的终结器会在调用 exit 之后立即调用。 ,而在其他情况下,根本不会调用它们。

情况非常确定 - 应用程序在其生命周期内从外部插件 dll(用非托管 C 编写)调用一些方法。
如果我使用 dll A,终结器总是被调用。
如果我使用 dll B,则永远不会调用终结器。

在 exit(0) 调用的情况下终结器的预期行为是什么? (如果有任何预期和记录的行为)

调用外部 dll 是否可以更改某些可能影响进程终止方式的全局设置?

最佳答案

Chris Brumme 谈到了在进程关闭期间如何处理终结器:

最重要的是,在关闭时运行终结器的保证方式似乎很少,但我不确定 DLL 可能做了什么导致事情发生不同的行为(也许是那个DLL 在 DLL_PROCESS_DETACH 处理中做了一些事情,这让 .NET 有机会处理终结器。

这篇文章是针对 .NET 1.x 的——我不确定这在 .NET 2.0 或更高版本中有多少变化。

关于c# - .NET - 终结器和退出(0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/713805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com