展开

关键词

首页关键词appdomain

appdomain

应用程序域(applicationdomain)(AppDomain)一种边界,它由公共语言运行库围绕同一应用程序范围内创建的对象建立(即,从应用程序入口点开始,沿着对象激活的序列的任何位置)。应用程序域有助于将在一个应用程序中创建的对象与在其他应用程序中创建的对象隔离,以使运行时行为可以预知。在一个单独的进程中可以存在多个应用程序域。

相关内容

  • 什么是AppDomain?

    什么是AppDomain?应用程序有什么好处,或者为什么微软带来了AppDomain的概念?
    来自:
    回答:2
  • 如何在新AppDomain中加载程序集而不将其加载到父AppDomain中?

    我遇到的问题是,在自己的AppDomain中加载DLL的行为在父AppDomain中创建了一个引用,因此不允许我销毁该dll文件,除非我完全关闭该程序。代码如下: string fileLocation = @C:Collector.dll;AppDomain domain = AppDomain.CreateDomain(fileLocation);domain.Load(@Services.Collector);AppDomain.Unload(domain); 下面的代码: string fileLocation = @C:Collector.dlltempAppDomain = AppDomain.CreateDomain(Services.Collector, AppDomain.CurrentDomain.Evidence, domainSetupstuff Assembly projectAssembly = tempAppDomain.Load(assemblyFileBuffer); Then Im trying to clean up AppDomain.Unload
    来自:
    回答:2
  • 广告
    关闭

    云产品限时秒杀

    云服务器1核2G首年50元,还有多款热门云产品满足您的上云需求

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • .NET基础:应用程序域AppDomain

    在 CLR 里、AppDomain就是用来实现代码隔离的,每一个AppDomain可以单独创建、运行、卸载。AppDomain和其他概念之间的关系1、AppDomain vs 进程ProcessAppDomain被创建在Process中,一个Process内可以有多个AppDomain。每个AppDomain引用到某个类型的时候需要把相应的assembly在各自的AppDomain中初始化。因此,每个AppDomain会单独保持一个类的静态变量。4、AppDomain vs 对象object任何对象只能属于一个AppDomain,AppDomain用来隔离对象。三、在新AppDomain中创建对象上文已经说了创建AppDomain了,但是创建的新AppDomain却是不包含任何对象的,只是一个空壳子。那么如何在新的AppDomain中创建对象呢?
    来自:
    浏览:282
  • 从AppDomain迁移到AssemblyLoadContext

    AssemblyLoadContext 基本上AssemblyLoadContext是AppDomain的继承者,它提供相同而且更多的功能-除了安全边界(隔离)。官网文档中提到Appdomain已经过时了,为了兼容旧的版本,提供了部分功能。建议在.NET Core3.0及更高的版本使用AssemblyLoadContext。从AppDomain迁移到AssemblyLoadContext也许你仍在应用程序中使用AppDomain。现在,以下代码显示如何用AssemblyLoadContext的相应方法去替换掉AppDomain方法:获取所有程序集var assembliesInAppDomain = AppDomain.CurrentDomain.GetAssemblies();var assembliesInAssemblyLoadContext = AssemblyLoadContext.Default.Assemblies; 加载一个程序集AppDomain.CurrentDomain.Load
    来自:
    浏览:493
  • 如何删除AppDomain.Unload(域)后的pluginassembly?

    FE: AppDomainSetup setup = new AppDomainSetup();setup.ShadowCopyFiles = true;AppDomain appDomain = AppDomain.CreateDomain(assemblyName + _AppDomain, AppDomain.CurrentDomain.Evidence, setup);IPlugin plugin = (IPlugin)appDomain.CreateInstanceFromAndUnwrapAssembly assembly = appDomain.Load(assemblyName);if (assembly !Activator.CreateInstance(assemblyTyp); plugin.AssemblyName = assemblyNameWithEx; plugin.Host = this; } }}AppDomain.Unload(appDomain); 如何在不锁定程序集的情况下从appDomain获取assemblyinfos?
    来自:
    回答:2
  • 如何遍历当前进程中的AppDomain

    .Net Framework居然没有提供托管的接口来获取当前进程中的其它AppDomain!所以,我们只有借助承载接口(Hosting Interfaces)来完成这事了。object domain = null; while (true) { host.NextDomain(enumHandle, out domain); if (domain == null) break; AppDomainappDomain = (AppDomain)domain; list.Add(appDomain); } return list; } catch (Exception e) { return null
    来自:
    浏览:442
  • AppDomain,Serialization和System.Threading.Timer问题?

    我有一个使用CreateInstanceAndUnwrap在AppDomain中创建的类。该类包含System.Threading.Timer。void TimerMethod(object state) { Started is always false here when this class is created within an AppDomain}; _AppDomain = AppDomain.CreateDomain(appDomainSetup.ApplicationName, AppDomain.CurrentDomain.Evidence, appDomainSetup); _Class1 = _AppDomain.CreateInstanceAndUnwrap(Library, Library.Class1) as Class1; }private readonly AppDomain _AppDomain; private readonly Class1 _Class1; private void button1_Click(object
    来自:
    回答:2
  • 在进程中列出AppDomain

    如何枚举Process中的AppDomain是否有可能?
    来自:
    回答:2
  • 为什么调用AppDomain.Unload不会导致垃圾回收?

    当我执行AppDomain.Unload(myDomain)时,我希望它也可以完成一个完整的垃圾回收。根据Jeffrey Richter的“CLR via C#”,他说在AppDomain.Unload期间: CLR强制执行垃圾回收,回收由现在卸载的AppDomain创建的任何对象所使用的内存。args){ AssemblyName an = AssemblyName.GetAssemblyName(ClassLibrary1.dll); AppDomain appDomain2 = AppDomain.CreateDomain(MyDomain, null, AppDomain.CurrentDomain.SetupInformation); IXmlClass c1 = (IXmlClass)appDomain2.CreateInstanceAndUnwrap.FriendlyName); AppDomain.Unload(appDomain2); Console.WriteLine(Number of collections after unloading
    来自:
    回答:2
  • 如何递归加载所有引用的程序集到AppDomain?

    我想加载到一个新的AppDomain程序集,它有一个复杂的引用树(MyDll.dll - > Microsoft.Office.Interop.Excel.dll - > Microsoft.Vbe.Interop.dll- > Office.dll - > stdole.dll) 当一个程序集被加载AppDomain时,其引用不会自动加载,我必须手动加载它们。所以当我这样做时: string dir = @SomePath; different from AppDomain.CurrentDomain.BaseDirectorystring path =System.IO.Path.Combine(dir, MyDll.dll); AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation;setup.ApplicationBase = dir;AppDomain domain = AppDomain.CreateDomain(SomeAppDomain, null, setup); domain.Load
    来自:
    回答:2
  • 使用C#将AppDomain映射到友好名称

    Default Web Site -First Application -Second Application -Third Application 我们使用nLog将东西记录到数据库,其中一个是当前的appdomain${appdomain:format=Format} 如https:github.comNLogNLogwikiAppDomain-Layout-Renderer所述。这很好,除非我查看我们的整合日志,我看到appdomain记录为: 0002: LM W3SVC 2 ROOT-1-132036049222959352 我想把它翻译成“第三个应用程序”(所以当我创建一个报告时
    来自:
    回答:1
  • 如何响应C#中AppDomain的异步回调?

    我有一些加载的代码和AppDomain(称之为域)调用域中的对象函数。目的是使用设备API从USB设备获取项目列表以检索信息。API需要回调才能返回信息。var AppDomain.CreateDomain( $BiometricsDomain{System.IO.Path.GetRandomFileName()});var proxy = domain.CreateInstanceAndUnwrap
    来自:
    回答:2
  • AppDomain和MarshalByRefObject的生命时间太短时如何避免RemotingException?

    当MarshalByRef对象从AppDomain(1)传递到另一个(2)时,如果在第二个AppDomain(2)中调用其方法之前等待6分钟,得到一个RemotingException: System.Runtime.Remoting.RemotingException
    来自:
    回答:2
  • clrinject:向CLR Runtimes和AppDomain中注入代码的工具

    前言clrinject是一款可将C#,EXE或DLL程序集,注入另一个进程CLR Runtimes和AppDomain的工具。注入的程序集可访问injectee进程类的静态实例,从而影响其内部状态。其他选项-e:枚举所有已加载的CLR Runtimes时和创建的AppDomain。-d :仅注入 -th AppDomain。如果未指定数字或指定为零,则会将程序集注入到所有AppDomain。示例使用示例从victim.exe枚举Runtimes和AppDomains:clrinject-cli.exe -p victim.exe -e将invader.exe从id为1234的进程注入第二个AppDomain:clrinject-cli.exe -p 1234 -a C:PathToinvader.exe -d 2在victim.exe中的每个AppDomain中创建Invader实例:clrinject-cli.exe
    来自:
    浏览:302
  • 原 利用Appdomain动态加载程序集,

    结构图 生成目录和新的appdomain基目录相同,随时生成,随时加载。
    来自:
    浏览:513
  • 在新的AppDomain中创建的第一个WCF连接非常缓慢如何解决?

    但是我发现,当我创建一个新的AppDomain时,来自该AppDomain的第一个WCF调用需要超过2.5秒。 有没有人有解释或修复为什么在新的AppDomain中首次创建WCF频道需要这么长时间?); new DomainRunner().Run(); Console.WriteLine(); Console.WriteLine(Running in new thread and AppDomain第一条扁平线是我在第一个appdomain之后放入的一个暂停,它有218个类加载。第二个AppDomain导致加载1,944个总类。📷 答案原来是因为只有一个AppDomain能够利用本机映像系统dll。所以第二个appdomain的缓慢是它不得不重新启动wcf使用的所有System。* dll。可以看到所有内容都已加载到共享的AppDomain中 📷 这里是用户LoaderOptimization(LoaderOptimization.MultiDomainHost)为main之后。
    来自:
    回答:2
  • 在新的AppDomain中创建的第一个WCF连接非常缓慢怎么办?

    但是我发现,当我创建一个新的AppDomain时,来自该AppDomain的第一个WCF调用需要超过2.5秒。 有没有人有解释或修复为什么在新的AppDomain中首次创建WCF频道需要这么长时间?); new DomainRunner().Run(); Console.WriteLine(); Console.WriteLine(Running in new thread and AppDomain第一条扁平线是我在第一个appdomain之后放入的一个暂停,它有218个类加载。第二个AppDomain导致加载1,944个总类。📷 因为只有一个AppDomain能够利用本机映像系统dll。所以第二个appdomain的缓慢是它不得不重新启动wcf使用的所有System。* dll。可以看到所有内容都已加载到共享的AppDomain中 📷 这里是用户LoaderOptimization(LoaderOptimization.MultiDomainHost)为main之后。
    来自:
    回答:2
  • C#中AppDomain.CurrentDomain.BaseDirectory及各种路径获取方法

    System.AppDomain.CurrentDomain.BaseDirectory 获取模块的完整路径,包含文件名System.Diagnostics.Process.GetCurrentProcessSystem.AppDomain.CurrentDomain.SetupInformation.ApplicationBase 获取启动了应用程序的可执行文件的路径。
    来自:
    浏览:724
  • 调用Assembly.Load(字节[])可以引发AppDomain.AssemblyResolve事件吗?

    假设我有一个AppDomain.AssemblyResolve事件处理程序,并且在处理程序中构造一个字节数组并调用该方法Assembly.Load(byte)方法内部引发的,它只发生在稍后某些代码尝试访问加载程序集中的类型
    来自:
    回答:2
  • WPF 跨应用程序域的 UI(Cross AppDomain UI)

    WPF 跨应用程序域的 UI(Cross AppDomain UI) 发布于 2017-11-12 16:36 更新于 2017-11-13 15:04 为自己写的程序添加插件真的是一个相当常见的功能,var domain = AppDomain.CreateDomain(X);var instance = (DomainX)domain.CreateInstanceAndUnwrap(typeof(
    来自:
    浏览:406

扫码关注云+社区

领取腾讯云代金券