appdomain相关内容
我有一个公共类库,其中包含许多用于我的服务器和客户端的模型.由于客户端在 Xamarin 下运行,因此公共库必须是可移植类库 (PCL). 在我的服务器中,这些对象通过 AppDomain Remoting/Marshaling 传递,所以据我所知,对象要么需要标记为 [Serializable] 或从 MarshalByRefObject 继承> 在 PCL 中,我无法对我的任何模型
..
究竟什么是应用程序域 (AppDomain),它与进程或线程有何不同? 解决方案 参见 MSDN. 应用程序域提供了一个更安全、更通用的处理单元,公共语言运行时可以使用它来提供应用程序之间的隔离.您可以在单个进程中运行多个应用程序域,并且具有与单独进程中存在的相同隔离级别,但不会产生进行跨进程调用或在进程之间切换的额外开销.在单个进程中运行多个应用程序的能力极大地提高了服务器的可扩展
..
我正在开发一个应用程序,需要将插件加载到单独的子应用程序域中.只有一个插件加载到一个子应用程序域中.每个插件都需要不同的 Windows 身份,这些身份与默认(父)应用程序域中使用的 Windows 身份不同.每个插件加载一个或多个其子插件. 例如默认应用域的标识是 Authority\Limited(权限是域名或机器名称).两个插件加载到两个子应用程序域中.加载的插件的身份是Authori
..
我正在调试一个 ASP.NET 应用程序,它似乎随机丢失了一些静态字段的内容.我做了一些简单的自定义日志记录(因为即使是 log4net 也是不稳定的),并发现该应用程序正在加载到两个应用程序域中.这是日志中的一个片段: 6/27/2011 9:01:01 PM/LM/W3SVC/1/ROOT/MyApp-1-129537072581658334:日志消息 16/27/2011 9:01:01
..
我的 C# 应用程序使用的本机代码不是线程安全的. 我可以运行该本地代码的多个进程,使用进程间通信来实现并发. 我的问题是,我可以改用应用程序域,以便多个托管线程(每个位于不同的应用程序域)调用本机代码并且它们不会相互干扰吗? 主要目标是防止进程分离. 解决方案 是的可以做到,但你应该认真衡量努力是否有回报. Windows 不会加载 非托管 DLL 的多个副本,并
..
我正在尝试在应用程序域中创建一个对象: var type = typeof (CompiledTemplate);var obj = (CompiledTemplate) domain.CreateInstanceAndUnwrap (type.Assembly.FullName, type.FullName); 但是,我总是收到以下错误: 无法将透明代理转换为类型“Mono.TextT
..
我一直在尝试将程序集动态加载到 AppDomain.我需要这样做,因为我想动态调用一个方法,但不要在我的应用程序运行时保留 DLL 的句柄,以便在需要时可以替换它.但是我收到了这个 SerializationException 异常:成员“..."的类型未解析 这是我的代码: AppDomain domain = AppDomain.CreateDomain("Temp AppDomain
..
所以我在谷歌上搜索它因为使用不安全的代码而冻结,并且 AbortException 仅在控制流返回到托管代码时抛出.所以,就我而言,我有一个本地库,在线程中调用.所以有时我无法中止它,因为库是原生的,并且 Abort 方法不仅什么都不做,而且冻结了调用线程. 所以,我想解决它. 例如,使用不同的流程应该会有所帮助,但它非常复杂. 因此,较轻的解决方案是使用“AppDomains"
..
我开发了一个 Java Web 应用程序并生成了 2 个不同的环境战争文件名称,分别为 test.war 和 prod.war 文件. 我想在域中发布war文件.所以我买了域名.例如:- www.example.com 并且我想在域中将我的战争文件发布为“www.test.example.com"和www.prod.example.com“.这可能吗? 解决方案 是的,这是可能
..
我有 2 个程序集.我将 classlib1 添加到 classLib2 引用中.像那样: 我就是这么用的: 命名空间 ClassLibrary2{公开课 Class1{公共类 1(){}public int GetSum(int a, int b){尝试{ClassLibrary1.Class1 ctx = new ClassLibrary1.Class1();返回 ctx.Sum(a,
..
在我的窗口窗体应用程序中,我创建了一个 Appdomain,比如 SandBox.在这个沙箱中,我从 TestAppdomain 类中执行了一些代码 Say TestMethod.此类位于 Test.dll 中,当前应用域(默认应用域)中未加载该类. 现在在执行 TestMethod 时发生了一些异常,然后我希望卸载沙盒域,并且由于 AppDOmain 提供隔离,我的默认 Appdomain
..
我需要在 any AppDomain 卸载时触发一个事件 - 包括进程中的默认事件.AppDomain.DomainUnload 的问题在于它只为非默认 AppDomains 触发.此外,AppDomain.ProcessExit 的执行时间有限,我无法依赖. 任何有关我如何实现这一目标的建议将不胜感激! (或者,在后台线程 (Thread.IsBackground == True)
..
让我描述一下我目前遇到的问题和解决方案,也许你可以帮助我了解为什么这是一个坏主意(假设它是)以及我可以做些什么来使其成为一个更好的系统. 现在我有 600 个“撕裂者"来解析文件并将它们撕裂为 csv 或其他格式.rippers 都实现了一个公共接口和基类.在作业排队时,根据该作业的配置,使用反射调用特定的 ripper. foreach(流中的var流){尝试{//加载它Assembl
..
我正在尝试在新的 AppDomain 中托管文本模板类代理. 我有一些执行类似操作的旧脚本代码,其中包含以下工作代码: _ScriptAppDomain = AppDomain.CreateDomain(scriptDomainFriendlyName);_ScriptProxy = (IScriptEngineProxy)_ScriptAppDomain.CreateInstanceAn
..
是什么导致调用 Finalize 方法? 此问题的 2 个答案(共 4 个)是: CLR 正在卸载 AppDomain 当 AppDomain 卸载时,CLR 认为AppDomain 中没有任何内容可以作为根,以及由以下内容组成的垃圾收集执行所有代. CLR 正在关闭 CLR 在进程正常终止时关闭(例如,与通过任务管理器外部关闭相反). 我假设 CLR 正在卸载 AppDo
..
这是CLR via C# 3e (Microsoft) 一书中的代码但它在运行时出错 未处理 TypeLoadException 无法加载类型“MarshalByRefType"来自程序集 'CLRviaCSharp,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken=null'. 除了方法'Main',所有代码都是上面提到的那本书. 使用系统;使用 System
..
这是一些示例代码: 使用系统;命名空间 UnloadFromFinalizer{课程计划{静态无效主(字符串 [] args){程序 p = 新程序();}AppDomain 域;程序(){this.domain = AppDomain.CreateDomain("MyDomain");}~程序(){AppDomain.Unload(this.domain);//
..
我有一个 wcf 服务,它使用 .net System.AddIns 框架将程序集加载到单独的进程和应用程序域中.为了提高性能,我想启用跨域 FastPath. 根据文档,我需要将 LoaderOptimizationAttribute 属性添加到我的宿主应用程序的主要方法中.但是我没有主要方法,因为我正在使用服务. 那么可以使用属性吗?如果不是,那么我如何确保加载程序集作为域中立加载
..
我需要从我的 .NET 4.0 进程中动态创建一个与 .NET 2.0 兼容的程序集.目前它是通过这个实现的: AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly(...)ModuleBuilder mb = assemblyBuilder.DefineDynamicModule(...); 但不幸的是,所有生成
..
我正在创建一个自我更新的应用程序,其中大部分代码都在一个单独的 DLL 中.它是命令行,最终将在 Mono 上运行.我只是想让这段代码在命令行的 Windows 上的 C# 中工作. 如何创建一个可以在运行时删除支持的 dll 的 c# 应用程序? AppDomain domain = AppDomain.CreateDomain("MyDomain");ObjectHandle inst
..