3

我正在开发一个到目前为止 100% 管理的 .NET 库。现在我需要使用一些 win32 调用。

我只需要知道什么时候称为非托管的.NET 库?当程序集有非托管代码或程序集中的非托管代码被执行时?

4

2 回答 2

2

只要您的代码在进行这些非托管 win32 调用后正确清理,那么您的库就会被管理。

于 2012-11-12T10:45:25.570 回答
2

您认为您正在编写 100% 托管代码,但实际上,如果您深入研究 .NET 框架的内部,即使这也称为非托管代码。尝试使用ILSpy.NET Reflector来查找 DllImport 或 extern 方法调用。程序集本身是受管理的,因为 .NET 正在执行所有 JITing、安全性、垃圾收集等。到装配体中的对象。在 .NET 调用非托管函数(Win32 等)时,.NET 不再控制代码,因此这是非托管的!

学习如何“管理”非托管代码导入是一种很好的做法。您应该包装可互操作的调用,以便在可互操作的调用完成后 .NET 可以尽可能多地进行清理。

在此处查看有关如何使用平台调用的信息:

http://msdn.microsoft.com/en-us/library/aa288468%28v=vs.71%29.aspx

于 2012-11-12T10:46:10.090 回答