问题标签 [appdomain]

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 投票
1 回答
3828 浏览

c# - ProcessExit 与 DomainUnload

我正在处理一个错误,即在应用程序关闭之前并不总是执行代码。该代码位于 AppDomain.CurrentDomain.DomainUnload 事件的处理程序中。

我发现收到此建议的有同样问题的人的帖子

“当您的默认应用程序域发生 DomainUnload 事件时,您的代码已停止执行。您可能可以使用默认 AppDomain 上的 ProcessExit 事件执行您需要的操作。”

这对我有用,但我想知道为什么。关于这些事件中的任何一个或它们之间的差异,我都找不到太多。我还想知道我是否需要同时订阅这两者或者 ProcessExit 是否足够。

编辑:

我想添加更多信息以使其更有用。

我忽略了在它们自己的 AppDomain 中创建新线程。因为我希望这段代码不仅在父进程完成时运行,而且在每个线程完成时运行,我需要订阅 DomainUnload 事件来处理每个线程完成的时间,并且还要订阅 ProcessExit 事件来捕获父进程完成时的事件。

0 投票
2 回答
2601 浏览

c# - AppDomain 和线程

基本上,根据我在互联网上设法搜索的一点点的了解,线程可以在 AppDomain 之间传递。现在,我编写了以下代码:

这工作正常,一切都在点击到位......主线程进入我的程序的新版本并开始在主应用程序主体中运行。我的问题是,我将如何让它回到父母身边AppDomain?这可能吗?我想要实现的是在两个域之间共享一个类的实例。

0 投票
3 回答
4700 浏览

java - Java AppDomain 喜欢抽象吗?

我很好奇是否有任何类似于 .Net 的 AppDomain 的 Java 抽象。

特别是,我很好奇,因为我发现对于我们的 Coldfusion/J2EE 服务器,我们需要每隔几天重新启动它一次,因为我们还无法轻松追踪到缓慢的内存泄漏。这可能会破坏我们长期运行的进程,我们真的想要一种方法来慢慢地将人们推向新的 JVM,因为他们的年龄超过了某个时间段/内存阈值。

根据我有限的 .Net 经验,我很确定这是 IIS 和 AppDomains 能够通过回收承受内存压力的 AppDomains 来相当无缝地管理的一种情况。如果我在 AppDomains 上提供帮助,请告诉我。

有什么建议么?

0 投票
1 回答
546 浏览

c# - 完全信任 AppDomain 中的最小信任 AppDomain 交叉调用方法

我有一个最小信任AppDomain,它在完全信任的完全信任程序集中调用(跨越远程边界)方法AppDomain

但是,在进行这些方法调用时,我遇到了很多安全异常。看起来,最小信任“沙盒”正在将其最小安全权限沿堆栈传播到完整信任程序集。

SecurityAction.Assert除了用's标记我在完全信任程序集中的所有方法之外,有没有办法解决这个问题?

谢谢

0 投票
5 回答
5230 浏览

log4net - 跨应用程序域的 log4net

我有一个应用程序,它从一个 appdomain 初始化 log4net,并需要在另一个 appdomain 中使用它。是否支持?

如果不是,我应该从每个 appdomain 初始化 log4net 吗?在同一个应用程序中进行多次初始化是否存在风险?我应该使用相同的 log4net.config 吗?

0 投票
1 回答
305 浏览

multithreading - COM 互操作中的 appdomains

我有一个调用 C++ COM 对象的 .Net 类,该对象又调用 COM 中的另一个 .Net 类。我发现这两个 .Net 类位于不同的 appdomains 中(这给 log4net 带来了一些麻烦)。请注意,它们在同一个线程中。

为什么是这样?有没有办法确保它们在同一个 appdomain 中?

0 投票
4 回答
48496 浏览

.net - 什么是 .NET 应用程序域?

特别是,在两个不同的应用程序域中运行代码意味着什么?

数据通常如何跨应用程序域边界传递?是否与跨流程边界传递数据相同?我很想知道更多关于这个抽象以及它的用途。

编辑:我不了解应用程序域时,AppDomain 类的现有覆盖范围很好

0 投票
2 回答
1070 浏览

c# - 从派生类中隐藏基类方法,但在程序集之外仍然可见

这是一个关于整洁的问题。该项目已经开始运作,我对设计感到满意,但我有一些松散的地方想要解决。

我的项目有一个插件架构。程序的主体将工作分派给每个驻留在自己的 AppDomain 中的插件。

插件使用接口进行描述,主程序使用该接口(获取调用的签名DispatchTaskToPlugin)和插件本身作为 API 合约:

在程序的主体中Register()调用,以便插件可以将其回调方法注册到基类中,然后再DispatchTaskToPlugin()调用以使插件运行。

插件本身分为两部分。有一个实现插件框架的基类(设置、内务管理、拆卸等)。这是DispatchTaskToPlugin实际定义的位置:

实际的插件本身只需要实现一个Register()方法(为基类提供最终调用的委托),然后实现它们的业务逻辑。

现在在基类BasePlugin(除了那种挥之不去的方法外,一切都是洁净的DispatchTaskToPlugin()

应该可以从Plugin类实现中调用——它们对它没有用处。只有程序主体中的调度程序才需要它。 如何防止派生类 ( Plugin) 看到基类 ( BasePlugin/DispatchTaskToPlugin) 中的方法,但仍然可以从程序集外部看到它?

如果从派生类中调用它,我可以分叉并DispatchTaskToPlugin()抛出异常,但这会使谷仓门关得有点晚。我想让它远离 Intellisense,或者可能让编译器为我处理这个问题。

建议?

0 投票
1 回答
4934 浏览

c# - WCF serviceType 作为单例实例

我创建了一个 Windows Communication Foundation 服务(本例中的 appDomain 是一个 Windows 窗体应用程序),它将其 serviceType 类初始化为单例:

启动服务工作。从客户那里拨打电话有效。但是,如果服务使用上面的代码调用自身(“//对服务进行第一次调用?”),我会得到一个 System.TimeoutException。

单例类有一个将在其初始化时启动的计时器对象。因此,一旦客户端对服务进行调用,就会实例化类,启动计时器,并且对象将继续存在,其计时器对象会定期触发。

对于上下文,计时器的事件将更新单例的属性。目的是让单例类定期执行计算,将数据保存在其属性中,并将属性中的任何内容返回给调用客户端。这样,执行定期(基于时间)计算的调用受到限制,并且所有客户端都会收到相同的更新数据。

问题是,一旦托管服务,它只需要一个客户端来调用要创建的单例实例并启动计时器。

我希望服务通过一次调用来初始化单例类,以便第一个发出请求的客户端不必等待配置和初始化发生;程序启动时要刷新的数据。就在“SetListText(”服务现在可用。“)之后;” 我有以下内容:

有没有办法让 WCF 服务在同一个 appDomain 中调用自身,或者这是否合理不受欢迎?是否有理由放弃这个自调用代码而只接受第一个客户的服务调用?

0 投票
3 回答
4927 浏览

c# - 创建在外部进程中运行的 WPF“控件”

我有一个 WPF 应用程序,其中包含许多子控件。

其中一个控件托管一个第三方库,该库在后台运行一些本机代码,这些代码会引发访问冲突并使应用程序崩溃。不幸的是,删除库不是一种选择。

我想做的是启动一个新的 Windows 进程,在其中托管第三方库,并以某种方式与之通信。与 Google Chrome 和 IE8 处理浏览器插件的方式非常相似。

问题是第三方库需要绘制到屏幕上,所以我必须以某种方式在我的 WPF 应用程序的主窗口中拥有相当于 HTML iframe 的内容。

我不知道如何开始,到目前为止很难用谷歌搜索。任何意见是极大的赞赏。