簡體   English   中英

我的代碼是管理還是不管理?

[英]Is my code managed or unmanaged?

我正在開發一個迄今為止100%管理的.NET庫。 現在我需要使用一些win32調用。

我需要知道的是什么時候是一個名為unmanaged的.NET庫? 當程序集具有非托管代碼或程序集中的非托管代碼執行時?

只要您的代碼在進行這些非托管的win32調用后正確清理,那么您的庫將被管理。

您認為您正在編寫100%托管代碼,但實際上如果您深入研究.NET框架的內容,即使調用非托管代碼也是如此。 嘗試使用ILSpy.NET Reflector查找DllImport或extern方法調用。 程序集本身是受管理的,因為.NET正在執行所有JITing,安全性,垃圾收集等。 到程序集中的對象。 在.NET調用非托管函數(Win32等)時,.NET不再能夠控制代碼,因此這是不受管理的!

學習如何“管理”非托管代碼導入是一種很好的做法。 您應該包裝可互操作的調用,以便在完成可互操作的調用后,.NET可以盡可能地清理。

請查看有關如何使用Platform Invoking的信息:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM