- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在不将该程序集加载到当前应用程序域的情况下保留对另一个应用程序域的程序集的引用?
我正致力于修复动态生成程序集并运行动态生成的代码的 Windows 服务中的内存泄漏。问题是生成的程序集已加载到当前应用程序域中,并且永远无法卸载。
其中一个 Windows 服务库中有一个方法具有以下签名:
public Assembly CreateMethod(ObservableCollection<Field> sourceFields, Field destinationField)
此方法为程序集创建代码并使用 CSScript 库 LoadMethod 函数加载它:
result = CSScript.LoadMethod(scriptFunction.ToString());
稍后来自 CreateMethod 的这个程序集引用用于在生成的程序集中运行一个函数。
public object Run(Field destinationField, ObservableCollection<LinkField> sourceLinkFields, DataRow mainRow, Assembly script) {
...
var method = script.GetStaticMethodWithArgs("*.a" + Id.ToString().Replace("-", String.Empty), argumentTypes.ToArray());
return method(arguments.ToArray());
}
我想知道是否可以将动态生成的程序集加载到另一个应用程序域中,并通过某种类型的代理运行它们,而无需将其加载到当前应用程序域中。
编辑:
我想知道当程序集加载到另一个 AppDomain 中时,我是否可以在一个 AppDomain 中使用 Assembly
类引用。查看 MSDN 文档,他们展示了如何使用 MarshalByRefObject。基本上我试图避免将签名更改为我的 CreateMethod 函数,但是如果这不可能,我可能需要将其更改为返回 MarshalByRefObject。
更新:
我最终将对 CSScript.LoadMethod 的调用放在我保存字典的其他应用程序域中,然后我让 CreateMethod 返回一个 Guid 而不是一个程序集,然后我传递这个 Guid 直到调用 Run。 Run 调用现在将 Guid 作为参数而不是 Assembly。在 Run 调用中,我将 Guid 传递给其他应用程序域,运行该方法,并通过继承 MarshalByRefObject 的类返回结果对象。
最佳答案
如果您不想在主 AppDomain 中使用动态程序集,则必须将 CreateMethod
移动到另一个 AppDomain,因为只要您拥有 Assembly
的实例, 已加载。换句话说,不可能在另一个应用程序域中保存对程序集的引用,只能跨应用程序域调用该程序集。
在不更改签名和一堆代码的情况下,您似乎需要移动最少的数量:1) 程序集创建和 2) Run
。然后执行 Run
整理结果。
就 CreateMethod
而言,我认为您希望另一个程序集中的方法“包装”CreateMethod
并返回某种可以传递给 的标记运行
。这几乎就像以某种方式更改签名...
关于c# - 从另一个 AppDomain 编码程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772268/
我对自定义 CSS 或在将图像作为 Logo 上传到页面时使用编码 block 有疑问。我正在为我的网站使用 squarespace,我需要帮助编码我的 Logo 以使其适合每个页面。一个选项是使用自
如 encoding/json 包文档中所述, Marshal traverses the value v recursively. If an encountered value implement
我必须做一些相当于Java中的iconv -f utf8 -t sjisMS $INPUT_FILE的事情。该命令在 Unix 中 我在java中没有找到任何带有sjisMS的编码。 Java中有Sh
从 PHP 5.3 迁移到 PHP 5.6 后,我遇到了编码问题。我的 MySQL 数据库是 latin1,我的 PHP 文件是 windows-1251。现在一切都显示为“ñëåäíèòå àäðå
我有一个 RScript文件(我们称之为 main.r ),它引用了另一个文件,使用以下代码: source("functions.R") 但是,当我运行 RScript 文件时,它提示以下错误:
我无法设法从 WSDL 创建 RPC/编码风格的代码 - 有谁知道哪个框架可以做到这一点? 带有 adb 和 xmlbeans 映射的 Axis2 无法正常工作(无法处理响应中的肥皂编码)直接使用 X
安装了最新版本的Node.Js()和npm包**(1.2.10)**当我运行 Express 命令来生成项目时,它向我抛出以下错误 buffer.js:240 switch (encoding &
JavaScript中有JSON编码/解码base64编码/解码函数吗? 最佳答案 是的,btoa() 和 atob() 在某些浏览器中可以工作: var enc = btoa("this is so
>>> unicode('восстановление информации', 'utf-16') Traceback (most recent call last): File "", line
我当然熟悉 java.net.URLEncoder 和 java.net.URLDecoder 类。但是,我只需要 HTML 样式的编码。 (我不想将 ' ' 替换为 '+' 等)。我不知道任何只做
有一个非常简单的 SSIS 包: OLE DB Source 通过 View 获取数据(数据库表 nvarchar 或 nchar 中的所有字符串列)。 派生列,用于格式化现有日期并将其添加到数据集(
我正在使用一个在 Node 中进行base64编码的软件,如下所示: const enc = new Buffer('test', 'base64') console.log(enc) 显示: 我正
前言 下文介绍的自定义协议仅作为学习示例,纯粹是玩具项目,没有实际可用性。无需过度关注和讨论其合理性 进行通信的双方是谁? 常见的模型 客户端-服务器,例如HTTP协议,浏览器<=>
我试图将带有日语字符的数据插入到 oracle 数据库中。事情是保存在数据库中的是一堆倒置的问号。我该如何解决这个问题 最佳答案 见 http://www.errcode.net/blogs/?p=6
当我在 java 中解压 zip 文件时,我发现文件名中出现了带有重音字符的奇怪行为。 西索: Add File user : L'equipe Technique -- Folder : spec
在网上冲浪我找到了 ExtJS 的 Ext.Gantt 插件,该扩展有一个特殊的编码。任何人都知道如何编码那样或其他复杂的形式。 Encoded Gantt Chart 最佳答案 它似乎被 Dean
我正在用C语言做一个编码任务,我进展顺利,直到读取符号并根据表格分配相应的代码的部分。我必须连接几个代码,直到它们的长度达到 32 位,为此我必须将它们写入一个文件中。这种写入文件的方法给我带来了很多
我有一个外部链接的 javascript 文件。在那个 javascript 里面,我有这个功能: function getMonthNumber(monthName){ monthName = mo
使用mechanize,我检索到一个网页的源页面,其中包含一些非ASCII字符,比如汉字。 代码如下: #using python2.6 from mechanize import Browser b
我有一个包含字母 ø 的文件。当我用这段代码 File.ReadLines(filePath) 读取它时,我得到了一个问号而不是它。 当我像这样添加编码时 File.ReadLines(filePat
我是一名优秀的程序员,十分优秀!