问题标签 [applicationdomain]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
139 浏览

actionscript-3 - 访问文档类 AS3 以外的外部 SWF 类?

我像往常一样加载外部 SWF,并且我正在处理 COMPLETE 侦听器:

这非常有效,我可以从外部 SWF 的文档类中访问变量和函数。但是,并非 SWF 库中的所有其他类都未在文档类中实例化。我还想访问这些其他类中的变量和函数,我目前正在使用,例如:

这也有效。但是,我想访问库中的多个其他类,并且使用这种方法遍历它们中的每一个都非常乏味。我希望我可以使用 getQualifiedDefinitionNames() (我使用的是 Flash CC 和播放器 11.3,所以它可用)但是当我跟踪它时,它似乎不起作用。

必须有一种更简单的方法来访问我不知道的其他类。任何人都可以帮忙吗?

谢谢你,詹姆斯

0 投票
1 回答
346 浏览

asp.net - 让 ASP.NET MVC Web 应用程序加载域中性

我的公司有大量的客户,我们目前能够在每台服务器上处理有限数量的客户。但是,每个客户端都使用相同的核心 Web 应用程序。目前,某些内容存储在每个站点的本地,因此我们不能让它们使用相同的站点/应用程序池;虽然我们确实有一个多租户转换项目。

我们对所有程序集进行了强烈签名,我认为看看我们是否可以让它们在 ASP.NET 中加载域中立是一个有趣的想法。这样做的好处是显着降低我们的内存成本,这是我们目前最高的成本/限制因素之一。此外,我们似乎能够简化当前 [编译] IO/CPU 绑定的部署过程,并且经常花费我们大约 6 个小时。

此任务意味着我想将程序集从加载应用程序池的应用程序域移动到共享域。

我对域中性加载要求的理解是:

  1. 程序集必须经过严格签名并在 GAC 中。
  2. 绑定闭包中的依赖项必须在 GAC 中 [并经过强签名]。

我试图让它工作,但我不能让它为一个小的示例应用程序工作。我首先尝试将 Newstonsoft.Json 放入 GAC,令我兴奋的是,它在回收后翻转到了共享域。但是,即使在对所有其他人进行 GAC 之后,我也无法让其他任何人切换到共享域:

在此处输入图像描述

我的目标是让我的主应用程序 DLL 被加载域中立。我如何调试/继续找出为什么剩余的程序集没有被加载为域中立?

此外,我对 NGEN 代码页共享与共享域加载程序集的关联或对比感到有些困惑。

0 投票
1 回答
87 浏览

actionscript-3 - GOING MAD SWF 资产未加载

我已经阅读了许多网站上有关“SWF 加载问题”的帖子,但没有任何帮助。也许我的环境或一些小东西错过了导致 LOADER.CONTENT 始终为 NULL。SWF 文件位于同一文件夹中,该文件夹已添加到 Flash 首选项中的受信任位置。

mxmlc -static-link-runtime-shared-libraries用来构建两个 SWF 文件,一个是主要文件,另一个是资产“图像、声音和一些代码”。LOADER.PROGRESS 被触发:EVENT.bytesLoaded 很快等于 EVENT.bytesTotal "11303918",但所有 CONTENT 元素都是 NULL,因此没有要附加的 CLASS。我已经放弃了 LOADER.COMPLETE,因为它永远不会在本地触发,有人说这是一个 FIREFOX 缓存问题;因此,我只是通过 PROGRESS 字节触发完成。

为了保护无辜者,一些名称已更改为“MAIN、PART 和 ASSETS”,但在撰写这篇文章时没有任何代码受到损害……然而。

My Flash App 是一个简单的音乐混音器。Main 定义了控制板。资产提供音乐、图像和一些可执行代码。

如果构建为单个 SWF,则一切正常。我想添加一个预加载器,因为某些设备(如手机)加载速度非常慢,而且预加载器非常有趣。因此,资源已被放置在它们自己的 SWF 中以由 Main 加载。

以下是我的代码的重要部分: 没有编译器错误,因此假设所有导入都存在并且定义了变量。

MAIN.as -- MAIN.SWF

PART.as -- SWC 内置在 MAIN.SWF 中

资产.as -- 资产.SWF

在我的绳索尽头。loader.progress 加载字节,但每个 CONTENT 都是空的,因此没有挂钩可以转换为 CLASS 并访问嵌入其中的资产。

0 投票
2 回答
125 浏览

c# - c#如何在所有应用程序域中定义一个公共变量

考虑我想分别运行 APP.exe 2 次。我需要定义一个在所有应用程序域中共享的变量。例如,我的代码中有一个整数 X,我在 app.exe(1) 中更改了它(表示应用程序的第一次运行),然后想在 app.exe(2) 中使用它(同一个应用程序的第二次运行)。但是每次变量初始化并且每个运行的应用程序都有它的 X。我知道如果我为 X 设置静态,这不会发生在 Web 应用程序中,但是对于 WPF 和 Winform,应用程序域是不同的,并且 X 是不同的。实际上我真正的问题是锁定实体模型。我想防止每个应用程序实例访问模型。我知道通过 SQL 可以实现,但我想在 C# 中锁定一个公共共享变量。

已编辑

我使用了 Mutex,但问题仍然存在。请看我的例子

我运行我的 app.exe 2 次。我希望该消息将只显示一次,因为我没有释放互斥锁,但对于 app.exe 的每次运行它都会起作用并显示该消息。实际上,互斥锁似乎不是在所有应用程序之间共享的,并且每次运行都有自己的互斥锁!

0 投票
0 回答
101 浏览

c# - 默认 CLR 主机为每个域提供 2 秒的“ProcessExit 事件处理程序”?

C# 7.0 in a Nutshell book 中,我读过一些似乎有点令人困惑的东西。

与 DomainUnload 事件不同,ProcessExit 事件处理程序是定时的:默认 CLR 主机在终止其线程之前为每个域提供两秒钟的事件处理程序,总共三秒钟。
(第 24 章 - 第 956 页)

2 秒对于代码块(即事件处理程序)意味着什么?似乎这取决于当前
进程 专用了多少时间- 因为这 2 秒通常由操作系统在进程之间共享。 因此,在进程被杀死之前,“进程退出事件处理程序”中允许完成多少工作是不确定的。

0 投票
0 回答
43 浏览

actionscript-3 - AS3:从加载的外部 SWF 实例化类

我已经成功地将外部 SWF 加载到我的主 SWF 中,并且我能够访问外部 SWF 的类,因为我将它加载到同一个ApplicationDomain.

但是现在如果我想实例化exClass,我必须使用 * 作为类型吗?在这种情况下,exClassextends DisplayObject,所以我必须这样做才能使其工作:

这是你应该这样做的方式吗?看来我必须使用 * 作为类型,因为我没有做import my.stuff.com.externalClass我不想做的事情。导入该类会破坏加载外部 SWF 的目的。

0 投票
0 回答
37 浏览

c# - C# - 无法从创建的域中获取程序集

我创建了一个新的应用程序域并将 2 个程序集加载到其中(参见下面的代码示例)。但是,如果我尝试使用GetAssemblies方法,我会得到异常System.IO.FileNotFoundException

0 投票
1 回答
548 浏览

c# - 在 .Net Core 中替换 AppDomain.CreateDomain

我正在尝试迁移到不再支持应用程序域的 .Net 5。

我使用 .Net Framework 中的应用程序域来启动多个 WPF 测试,而它们之间没有交互。

并使用 appDomain 来执行应用程序。在 .Net 5 中,这不再可能。

我调查了一下AssemblyLoadContext ,我找不到任何方法来实现这种隔离。

我使用 MS 测试作为测试框架,我找不到将每个测试隔离到单个进程的方法。

0 投票
0 回答
37 浏览

c# - 无法加载使用新应用程序域中的代码生成的程序集

我有一个 asp.net 应用程序,它从用户脚本动态生成程序集。一切正常,但现在我想在沙盒应用程序域中以减少的权限运行程序集。当我在新的应用程序域中加载程序集时,我得到了异常

无法加载文件或程序集“genb3336c1d82074079911fb70bd8bd7e65.dll,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

为了查看发生了什么,我将生成的程序集保存到磁盘,并使用以下代码编写了一个简单的应用程序

当我再次尝试在新域中加载程序集时,我得到了同样的异常。在 CurrentDomain 中加载它可以正常工作。

然后我创建了一个类库,其中只有一个类和我从中生成 dll 的源代码。源代码最少,一个方法只有 2 行代码。现在,当我在新的应用程序域中构建和加载这个 dll 时,它加载得很好。

我在 ILSpy 中打开了 2 个 dll,它们看起来相同 在此处输入图像描述

所以我不知道生成的dll有什么问题。我使用以下代码生成程序集。

有人知道吗?

编辑: 这是融合日志。我不知道如何解释它。