gpt4 book ai didi

c# - 在运行时构建一次性方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:55 25 4
gpt4 key购买 nike

我的程序随时创建新方法(使用 MethodBuilder 和 byte\IL 数组),它执行一次并丢弃对它们的引用。我发现它们实际上并没有受到 GC 的影响。有没有办法让 GC 收集或处理它们?

我发现问题是要创建新方法,需要加载它的程序集,之后无法卸载。我需要在主应用程序域上运行这些方法。 (它创建对象或修改一些对象)有没有 MethodBuilder 的替代方案,并且无论如何都只执行那些 byte\IL?

最佳答案

使用DynamicMethod如果您只需要发出一个可以稍后进行垃圾回收的方法。来自文档:

Defines and represents a dynamic method that can be compiled, executed, and discarded. Discarded methods are available for garbage collection.

如果您需要动态构建一个类型,那么您需要为其定义一个可以收集的动态程序集。为此,请使用带有 AssemblyBuilderAccess.RunAndCollect 选项的 AssemblyBuilder.DefineDynamicAssembly。在详细的收藏集会中可以做什么有一些限制 here .

关于c# - 在运行时构建一次性方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24345527/

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