appdomain相关内容
我有一个运行系统托盘应用程序的 C# 程序 - 在后台传输/移动/创建/编辑文件. 如果用户手册删除了程序正在使用的文件,有很多异常处理和循环处理可以防止程序崩溃/卡住. 不幸的是,运行程序的其中一台计算机出现程序崩溃.电脑很难拿到,不能装调试软件(是嵌入式的外置电脑,不能上网). 我已尝试查找崩溃的原因(例如未处理的异常),但没有找到任何内容,并且无法访问位于远程位置的 PC.
..
不知何故,我假设传递给另一个 AppDomain 的委托会变成代理,就好像它是从 MarshalByRefObject 派生的对象.不幸的是,他们似乎没有. 假设在我的代码中我有一个类 MyClass 像这样: [可序列化]公共密封类 MyClass{public FuncSomeDelegate;}[可序列化]公共密封类 Input { ... }[可序列化]公共密封类输出 { ...
..
我想以隔离的方式运行来自不同 .dll 的多个服务.基本上,所有服务都源自 RoleEntryPoint ,我想将每个服务加载到单独的 AppDomain 中,并在不同的线程中运行它. 到目前为止,我可以找到该服务并获取其类型: String pathToDll = @"C:\....\bin\Debug\ChildWorkerRole.dll";装配装配 = Assembly.Load
..
我正在处理我的第一个使用 AppDomains 的项目,我想知道当一个对象从 MarshalByRefObject 派生并标记为 [Serializable] 时会发生什么? 例如: [可序列化]公共类 DummyClass:MarshalByRefObject{} 解决方案 它通过引用进行编组,但仍然可以为其他用例进行序列化以进行序列化.有一个实现细节很有趣,值得一提:为远程处理序列
..
在处理自己子目录中的插件程序集时,存在一个众所周知的问题,即这些程序集一旦尝试从其子目录加载各自的依赖项,就会加载失败.一个解决方案是在 AppDomains 中加载插件,这些插件在初始化时在它们的 AppDomainSetup 对象中设置了它们的 PrivateBinPath.然而,这会导致有关编组/跨 AppDomain 通信的其他困难,特别是如果插件应该提供一些 GUI. 当安全方面的
..
我的情况是我有一个创建 AppDomains 的 .net 应用程序(假设是一个控制台应用程序).然后它需要在该 AppDomain 中的类型上创建实例和调用方法.每个 AppDomain 都有一个特定的目录,它的依赖项应该在哪里,它不在(或什至靠近)Console Apps 目录下.这是我的简单代码: string baseDirectory = "c:\foo";//
..
经过一些研究,似乎 AppDomains 并不是构建托管服务器的真正工具.根据我的理解,如果在创建的 AppDomain 中存在未处理的异常(如果从创建的 AppDomain 中的线程抛出异常),托管服务器仍然会崩溃.因此,在这种情况下,如果托管服务器托管了一个泄漏异常的服务,这也会导致默认的 AppDomain 失效. 所以我想从服务器架构的角度来看,没有什么比创建子进程并监控它们更好的了
..
我通过代理在另一个 AppDomain 中使用了一堆对象.它们位于一个单独的域中,因为我需要热交换包含这些对象的程序集,所以我在使用完它托管的程序集后卸载了 AppDomain. 有时我想检查一下我过去是否卸载了 AppDomain(或者它以某种方式自行卸载或其他原因)以进行测试.有没有办法做到这一点? 显而易见的方法是做一些会抛出 AppDomainUnloadedException
..
我有一些代码可以将 Razor 模板动态编译成我执行的程序集一组权限(不能访问文件等). 这适用于我们的开发计算机和我们的测试服务器(Windows 2008 IIS7 x64 .NET 4).但是在我们的生产服务器(相同规格)上,它给出了错误: “加载此程序集将产生与其他实例不同的授权集.(来自 HRESULT 的异常:0x80131401)" 这是代码:- public
..
我正在尝试使用 C# 作为脚本语言,使用 CSharpCodeProvider(使用 VS2010 和 .NET 4.0).我希望脚本以最少的权限在受限的 AppDomain 中运行.目前,我在尝试实例化 AppDomain 中的类时遇到异常(调用 CreateInstanceAndUnwrap()).下面是一些重现异常的简化代码: 使用系统;使用 System.Collections.Gene
..
我正在使用单例模式来加载数据库中的一些配置.如果我在数据库中添加一些新配置并重新启动 web 服务,则它不会加载这些设置.为此,如果我确实重新启动了 IIS 服务器,则它可以正常工作. 我不确定它驻留在何处?它是否已加载到 App Domain 中并且我还需要重新启动 AppDomain?我不清楚为什么会这样.因为如果我从 IIS 重新启动服务,它也应该清除应用程序域中的所有信息,但不会发生
..
我有一个 WCF 插件服务,它通过 MEF 加载插件并运行它们. 每个插件都是一个目录,其中包含多个实现特定接口的 dll. 我使用 MEF (DirectoryCatalog) 在同一个 AppDomain 中加载所有插件并以通用方式运行它们(使用反射). 现在假设我有两个具有 dll 依赖项的插件: 插件1---->实体 1.0.0.1插件2---->实体 1.0.0.2
..
我有一个 Windows 服务,它在运行时在另一个 AppDomain 中加载程序集.然后它执行它们并最终卸载 AppDomain.问题是插件的 execute 方法是异步任务,我得到了 SerializationException,因为 Task 不是从 MarshalByRefObject 继承的. 我将插件包装在继承自 MarshalByRefObject 的代理中,但我不知道如何摆脱
..
地点: 我正在从我的进程中创建一个子应用程序域来加载程序集. 我可以调用此 AppDomain. 我想将一个对象从我的默认进程 AppDomain 传递到这个新创建的 AppDomain,以接收从新 AppDomain 中加载的程序集到我的默认 AppDomain 的回调. 我发现的一种方法是使用 AppDomain.DoCallback 方法,但不确定如何在我的子 AppDoma
..
我正在开发一个插件主机.插件应该有尽可能少的信任,但是我希望插件有可能读取和写入文件. 是否可以限制加载程序集的 AppDomain 只能访问一个目录进行读写? 其他选项和方法也很受欢迎,例如将文件数据从主机流式传输到插件(读取)和从插件到主机(写入)的简单方法. 如果相关:我正在为插件使用 MAF 基础架构.http://msdn.microsoft.com/en-us/lib
..
我在 Windows 服务中收到此错误.这与我之前在我的问题此处 修改代码以使用Parallel.ForEach(我自己的版本,因为这是一个3.5 Windows 服务).使用 Parallel 的原因归结为 Unload 每个域花费的时间太长,并且并行运行它们应该被证明更快(似乎即使每个 Unload 只有一个线程正在执行?!). 基于其他帖子,我只能猜测这在某种程度上归结为我使用
..
我有一个服务,它加载一个子 AppDomain,然后启动一个在其中运行的线程.它需要一个 AppDomain,因为它会动态生成和加载一些代码,我需要能够在不终止整个服务的情况下重新启动它. 所以有一个线程在子 AppDomain 的事件循环中运行,它通过 MarshalByRefObject 获取传递给它的事件,该对象将内容粘贴在并发队列中.我想停止并卸载子 AppDomain 并创建一个新
..
所以这是到目前为止的故事,我有一个使用 AppDomain 执行某些任务的工人东西.该域的设置和拆除成本很高.所以我为每个线程创建一个 WeakReference 对象的缓存给工作人员,就像这样: class Worker{[线程静态]静态字典_工人;public static Worker Fetch( ... ) { 你懂的 }私有 AppDomain _domain;公职人员(...){_
..
为了在发生错误时存储进程的状态,我想列出存储在 AppDomain 中的所有(自定义)数据(通过 SetData).LocalStore 属性是私有的,AppDomain 类不可继承.有没有办法枚举这些数据? 解决方案 AppDomain domain = AppDomain.CurrentDomain;domain.SetData("testKey", "testValue");Fie
..
我想知道,如果我有一个变量,例如一个字符串,如何将它的值传递给我的新应用域: 静态字符串_str;静态无效主(字符串 [] args){_str = "abc";AppDomain 域 = AppDomain.CreateDomain("Domain666");domain.DoCallBack(MyNewAppDomainMethod);AppDomain.Unload(域);Console.
..