appdomain相关内容

弹出窗口中的选项卡导航损坏,WPF 用户控件托管在默认 AppDomain 中的 Winforms 中

我有一个使用弹出窗口的 WPF 用户控件.此控件是一个插件,可以加载到主 AppDomain 或单独的 AppDomain 中,并使用 ElementHost 托管在 Winforms 窗体中.当在主 AppDomain 中加载插件并打开弹出窗口时,在弹出窗口的字段之间切换,而是将焦点移至弹出窗口父级的第一个控件.当它加载到新的 AppDomain 中时,选项卡行为按预期/期望工作(它在弹出窗口中 ..
发布时间:2021-11-16 19:11:56 C#/.NET

使用 AppDomain 将 dll 动态加载和卸载到我的项目中

我想在当前项目的单独解决方案中动态使用来自不同项目的类.我认为解决方案是将 dll 加载到我的项目中.我使用以下代码来完成我的任务并且它工作正常. string dllPath = @"我的dll路径";var DLL = Assembly.LoadFile(dllPath);foreach(DLL.GetExportedTypes() 中的类型类型){if (type.Name == "tar ..
发布时间:2021-11-16 19:11:53 C#/.NET

创建一个 WPF“控件"在外部进程中运行

我有一个 WPF 应用程序,其中包含许多子控件. 其中一个控件托管一个第三方库,该库在幕后运行一些本机代码,这些代码会引发访问冲突并使应用程序崩溃.不幸的是,删除库不是一种选择. 我想做的是启动一个新的 Windows 进程,在其中托管第三方库,并以某种方式与其进行通信.与 Google Chrome 和 IE8 处理浏览器插件的方式非常相似. 问题是第三方库需要绘制到屏幕上,所 ..
发布时间:2021-11-16 19:11:50 C#/.NET

FrameworkElementAdapters 类的性能

无法弄清楚为什么FrameworkElementAdapters 类的跨域调用如此缓慢.这是一个简单的代码: class 程序{[STAThread]静态无效主(){AppDomain 域 = AppDomain.CreateDomain("AnotherDomain");var instance = (AnotherDomainClass) domain.CreateInstanceAndUn ..
发布时间:2021-11-16 19:11:47 C#/.NET

如何获取父 AppDomain?

我需要在 c# 中做这样的事情(伪): static var ns = new Non_Serializable_Nor_Marshal()var app = new AppDomain();app.execute(foo)空 foo(){var host = AppDomain.Current.Parent;//例如.原来的主机.执行(酒吧)}空栏(){ns.Something();} IO ..
发布时间:2021-11-16 19:11:35 C#/.NET

是否有任何免费库可以实现类似于 MSMQ(Microsoft Message Queuing)的消息队列?

我有兴趣使用具有类似于 MSMQ 的功能的免费库在 win 表单应用程序中的 3 个应用程序域之间发送/接收消息.我只需要私有队列功能(没有公共队列或 AD 支持)请提供链接和一些优点/缺点.如果您认为需要更多积分以获得更详细的信息,我很乐意打开子问题. 注意:不幸的是我有一些用户没有 Windows XP 专业版(MSMQ 不可用)我看到了 Apache ActiveMQ 和 rabbit ..
发布时间:2021-11-16 19:11:32 C#/.NET

如何使用 CodeDOM 在 AppDomain 中创建和加载程序集?

我正在开发一个项目,该项目将使用 CodeDOM 创建一个类,该类评估用户定义的表达式、为该类创建程序集并加载该程序集.由于可以有相当数量的用户定义表达式,我想首先创建一个 AppDomain,在该 AppDomain 中为程序集执行 CodeDOM 创建/加载和执行,然后卸载 AppDomain. 我搜索了很多,找到了很多关于如何将现有程序集加载到 AppDomain 中的示例,但我似乎找 ..
发布时间:2021-11-16 19:11:29 C#/.NET

如何正确访问当前 AppDomain 的 PrivateBinPath 属性?

由于 AppDomain.AppendPrivatePath() 已过时,我正在尝试弄清楚如何在我的项目中为当前 AppDomain 指定 PrivateBinPath,而无需启动一个全新的 AppDomain,并且以后能够访问它. 我知道我可以在 AppDomainSetup 对象上设置 PrivateBinPath(如果我想创建一个新的 AppDomain 就可以了),而且我也知道我可以 ..
发布时间:2021-11-16 19:11:26 C#/.NET

使用 AppDomains 并行化非线程安全的 DLL

我有一个非托管 C++ DLL,我的 .NET 应用程序通过 p/invoke 使用它.我需要从这个 DLL 获得的方法相当耗时,我想并行化方法调用.问题是它使用了一堆静态变量和全局变量,因此它不是线程安全的(并且无法更改).我的计划是通过从多个 AppDomain 并行调用非托管 DLL 来克服这个非线程安全问题. 我可以从多个 AppDomain 调用非托管代码而不会出现任何问题,只要我 ..
发布时间:2021-11-16 19:11:23 C#/.NET

MEF 和 ShadowCopying DLL,以便我可以在运行时覆盖它们

我试图停止我的应用程序锁定我的 MEF 插件目录中的 DLL,以便我可以在运行时覆盖程序集(注意,我实际上并没有试图让 MEF 即时重新加载它们,在下一个应用程序启动时很好,我只是不想停止应用程序来进行复制) 我试图通过为我的 mef 加载的程序集创建一个影子复制的应用程序域来做到这一点,如下所示: [可序列化]公共类作曲家:IComposer{私有只读字符串_pluginPath;公共作 ..
发布时间:2021-11-16 19:11:20 C#/.NET

IRegisteredObject 未按预期工作

背景 我正在开发一个 ASP.NET 4 网站(不是 Web 应用程序).我正在尝试使用 IRegisteredObject 来允许一些长时间运行的代码在非请求线程中运行. 为了进行测试,我将 IIS 7.5 应用程序池的回收间隔设置为较低的值,以便在后台线程运行时尝试回收. 代码 公共类 AspFriendlyBackgroundJob{私有只读对象密钥 = 新对象();私人 ..
发布时间:2021-11-16 19:11:17 C#/.NET

将 DLL 加载到单独的 AppDomain 中,只有已知的通用接口

我需要在另一个域中加载 .dll(插件).在主应用程序中,我对插件类型一无所知,只知道它们使用某些方法实现了通用接口 ICommonInterface.所以这段代码无济于事,因为我无法创建具有接口类型的实例. AppDomain domain = AppDomain.CreateDomain("新域名");//对域做其他事情,比如设置安全策略string pathToDll = @"C:\myD ..
发布时间:2021-11-16 19:11:11 C#/.NET

使用 MarshalByRefObject 跨应用域传递数据

我在两个 .NET 应用程序域之间传递一些数据时遇到了一些麻烦,我希望这里有人可以帮助我. 基本上我有一个主应用程序 (Main),它将程序集 A 和 B 加载到它的主域中,然后当我运行时插件(C)Main 调用 B 上的创建域方法,该方法创建一个新域并加载 C 和B 的一个实例放入其中,以便 C 只能访问 B 而不能访问其他人. B 包含一个指向 Main 的 IDispatch 的 ..
发布时间:2021-11-16 19:11:08 C#/.NET

如何在 App Domains 之间传递事件?

我有两个应用域,一个父域创建了子域.在子域中,有一个 MarshalByRef 对象,它使用 .NET Remoting 进行通信.在父域中运行的对象调用远程对象的包装器作为应用程序功能的一部分: 公共类 ScanningTask : 任务{私有类加载器:MarshalByRef{公共无效负载(IEnumerable路径){...}公共事件 EventHandler负载;}公共无效运行任务(){ ..
发布时间:2021-11-16 19:11:05 C#/.NET

为什么 Thread.CurrentContext 属性和 Thread.GetDomain() 方法?

这不是一个重要的问题,但我想知道为什么 Thread 类公开了一个用于获取当前上下文的属性 (Thread.CurrentContext) 和一个获取当前 AppDomain 的方法 (Thread.GetDomain()). 知道了 Process > AppDomain > Context > Thread 的层次结构,我的假设是线程的上下文在当前时间点是已知的,并且需要根据当前上下文搜 ..
发布时间:2021-11-16 19:11:02 C#/.NET

运行时可调用包装器 (RCW) 范围 - 进程还是应用程序域?

在引用非托管 COM 对象时,运行时可调用包装器 (RCW) 的范围是什么?根据文档: 运行时只创建一个 RCW对于每个 COM 对象,无论存在于那个对象. 如果我必须“猜测"——这个解释应该意味着“每个进程一个",但真的是这样吗?非常欢迎任何其他文档. 我的应用程序在它自己的应用程序域中运行(它是 Outlook 插件),我想知道如果我在循环中使用 Marshal.Releas ..
发布时间:2021-11-16 19:10:56 C#/.NET