在应用程序域之间来回传递值

2023-11-25

我有以下代码:

    public class AppDomainArgs : MarshalByRefObject {
        public string myString;
    }

    static AppDomainArgs ada = new AppDomainArgs() { myString = "abc" };

    static void Main(string[] args) {
        AppDomain domain = AppDomain.CreateDomain("Domain666");
        domain.DoCallBack(MyNewAppDomainMethod);
        Console.WriteLine(ada.myString);
        Console.ReadKey();
        AppDomain.Unload(domain);
    }

    static void MyNewAppDomainMethod() {
        ada.myString = "working!";
    }

我认为这样做会让我的 ada.myString “工作!”在主应用程序域上,但事实并非如此。我认为通过继承 MarshalByRefObject 对第二个应用程序域所做的任何更改也会反映在原始应用程序域中(我认为这只是主应用程序域上真实对象的代理!)?

Thanks


您的代码中的问题是您从未真正将对象传递到边界上;因此你有two ada实例,每个应用程序域中有一个(静态字段初始值设定项在两个应用程序域上运行)。您需要将实例传递到边界MarshalByRefObject魔法启动。

例如:

using System;
class MyBoundaryObject : MarshalByRefObject {
    public void SomeMethod(AppDomainArgs ada) {
        Console.WriteLine(AppDomain.CurrentDomain.FriendlyName + "; executing");
        ada.myString = "working!";
    }
}
public class AppDomainArgs : MarshalByRefObject {
    public string myString { get; set; }
}
static class Program {
     static void Main() {
         AppDomain domain = AppDomain.CreateDomain("Domain666");
         MyBoundaryObject boundary = (MyBoundaryObject)
              domain.CreateInstanceAndUnwrap(
                 typeof(MyBoundaryObject).Assembly.FullName,
                 typeof(MyBoundaryObject).FullName);

         AppDomainArgs ada = new AppDomainArgs();
         ada.myString = "abc";
         Console.WriteLine("Before: " + ada.myString);
         boundary.SomeMethod(ada);
         Console.WriteLine("After: " + ada.myString);         
         Console.ReadKey();
         AppDomain.Unload(domain);
     }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在应用程序域之间来回传递值 的相关文章

  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • VB.NET 中的模块变量何时实例化?

    我想知道在程序的生命周期中 模块中的变量将被初始化 如下例所示 Module Helper Friend m Settings As New UserSettings Sub Foo End Sub Sub Bar End Sub End
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 用python检测unicode私有使用区域字符

    在python 3中识别unicode专用字符的正确方法是什么 模块中没有任何明显相关的内容unicodedata 这使得查找角色名称和属性变得容易 一些背景 unicodedata name 给出 unicode 字符的名称 将引发Val
  • 参数化 PDO 查询和“LIMIT”子句 - 不起作用[重复]

    这个问题在这里已经有答案了 我有这样的查询 SELECT imageurl FROM entries WHERE thumbdl IS NULL LIMIT 10 它与 PDO 和 MySQL Workbench 完美配合 它根据我的需要返
  • 在 C# 中,我如何知道要捕获哪些异常?

    我已经养成了使用通用 catch 语句的习惯 并以通用方式处理这些异常 这是不好的做法吗 如果是这样 我如何知道可以抛出哪些特定异常以及捕获哪些异常 是的 除了在一些非常具体的情况下 这是不好的做法 我能想到的一种常见情况是 捕获所有异常并
  • C++ 控制台应用程序中的 PlaySound?

    已编辑 因此代码是正确的 感谢 a spot is 底部有新问题 所以我一直在玩控制台 因为我在那个级别 我们被要求制作我们的第一个 项目 进行评估 我已经完成了基本的应用程序 但我想让它活跃一点并添加一些声音 将从控制台播放的声音 这个测
  • 如何在 Symfony 4 中覆盖第三方包的资源?

    我使用 Symfony Flex 进行了全新的 Symfony 安装 新的框架属于下一个 Symfony 4 目录结构 下一个 我将覆盖一些资源例如来自外部包的模板 翻译等 我尝试为模板创建所有这些路径 首先 但没有任何效果 templat
  • 如何在 git checkout 上仅恢复修改过的文件?

    假设我有一个包含数百个文件的目录 我修改了其中一些 但后来我意识到我的修改很糟糕 如果我做 git checkout whole folder 然后所有的东西都会被再次检查 我必须重新编译所有的东西 有没有办法让结账只影响修改过的文件 或者
  • LazyLoadingEnabled 设置似乎在 EF 5 中不起作用

    我首先将 EF 模型与 POCO 实体和自定义 DbContext 一起使用 我的问题是设置LazyLoadingEnabled false不会影响任何内容 导航属性仍会加载 下面是我的简化示例 实体计划 一个程序可以是其他程序的一部分 n
  • 如何在 Postgres 中搜索字符串中是否存在整个单词

    我有一张带有一列的桌子field具有像三星手机这样的价值 我的问题是 如果我搜索字符串 Samsung 或 phone 如何获得这一行 如果我只给出 Sam 或 ph 作为搜索词 我不想要任何结果 我曾尝试使用 ILIKE 运算符 但如果我
  • 在 VB.NET 中订阅事件

    我正在尝试将一些 C 代码转换为 VB NET 我在 C 中有以下内容 有效 m switchImageTimer new DispatcherTimer m switchImageTimer Interval Interval m swi
  • Java:将大量数据序列化到单个文件

    我需要将小对象的大量数据 大约 2gig 序列化到单个文件中 以便稍后由另一个 Java 进程处理 性能很重要 谁能建议一个好的方法来实现这一目标 你有没有看过谷歌的协议缓冲区 听起来像是它的一个用例
  • AMD多核编程

    我想开始编写应用程序 C 它将利用额外的核心来执行需要执行大量计算并且其计算彼此独立的代码部分 我有以下处理器 x64 Family 15 Model 104 Stepping 2 Authentic AMD 1900 Mhz 在 Wind
  • JavaScript 中的睡眠 - 操作之间的延迟

    有没有办法可以在 JavaScript 执行另一个操作之前让其休眠 Example var a 1 3 Sleep 3 seconds before the next action here var b a 4 您可以使用setTimeou
  • 如何在 xunit/autofixture 中组合 PropertyData 和 AutoNSubstituteData 属性?

    我正在使用 AutoNSubstituteData 属性 发布在这里 AutoFixture xUnit net 和自动模拟 我想将其与 PropertyData 来自 xunit 扩展的属性 这是我的测试 public static IE
  • 在 Android Studio Java 中读取文本文件

    我有一个类 QuoteBank 需要使用扫描仪读取 txt 文件 但它给了我一个文件未找到异常 java 文件位于 应用程序 src main java nate marxBros QuoteBank java txt 文件位于 应用程序
  • Django celery Worker 将实时状态和结果消息发送到前端

    在 django 应用程序中 我正在运行异步任务 并希望向用户显示进度 错误等 如果出现错误 则应将用户重定向到需要额外输入或执行某些操作才能解决问题的页面 从 celery 工作返回到前端的最佳通信方式是什么 这是伪代码的基本结构 vie
  • 如何将 C# 方法添加到现有的大型 wix 脚本中

    我们现有的 wix 脚本相当复杂且冗长 所有自定义操作均使用内联 vbscript 执行 我想将其中一些操作从 vbscript 切换到 C 各地的所有示例都以 在 VisualStudio 中创建一个 wix 项目 开头 有没有关于如何将
  • 构建并安装 x86_64 而不是 i386 的 Brew 应用程序?

    我完成此操作后 酿造安装git 我这样做 哪个git 返回 usr local bin git 然后我这样做 文件 usr local bin git 返回 usr local bin git Mach O 可执行文件 i386 我需要br
  • 数字和一位小数的正则表达式

    我似乎无法使用简单的正则表达式来工作 这是我目前所拥有的 Hours on input function e var regex d d 0 2 g if regex test this value if regex test this v
  • 获取变量名。 javascript“反射”

    有没有办法获取变量name 就像你可以在 Net 中使用反射做的那样 就像在这个场景中 function x y z if x 0 logger log variable x reflectedName has invalid value
  • 在应用程序域之间来回传递值

    我有以下代码 public class AppDomainArgs MarshalByRefObject public string myString static AppDomainArgs ada new AppDomainArgs m