gpt4 book ai didi

c# - 在 C# 进程之间共享对象的推荐方式

转载 作者:太空狗 更新时间:2023-10-30 01:04:56 25 4
gpt4 key购买 nike

我已经阅读了很多关于 2 个 C# 应用程序之间的 IPC 及其优缺点的不同内容,但我觉得我还没有为我的用例找到令人满意的答案。

我有一个已经存在且会经常更改的对象(我正在尝试将我的工具附加到游戏中并使用它来调试使用该工具创建的元素)。因此,我不认为序列化是合适的,因为我基本上会无缘无故地每秒序列化/反序列化对象 60 次。结果,管道是不可能的(或者我在这里遗漏了什么?)。

由于游戏在 Unity 中运行,我受限于 .NET 3.5 技术,因此无法使用新的 .NET4 共享内存类。

所以看起来 .NET 远程处理是可行的方法。这不太理想——我不需要网络支持,我想共享的对象在内存中,没有真正的理由使用代理和发送消息来改变它的开销。

然而,this tutorial每个人都链接到的似乎不是很好 - 源代码无法编译,当我编译它时它崩溃了。本教程本身没有提及 Cache 类,这似乎是核心类,即使有源代码,我也看不出它如何适合我的应用程序。有更好的资源吗?这真的是最好的方法吗?

最后,我只剩下使用 C++ 进行插值以使用创建共享内存并将对象移入其中的非托管功能。在进入那个兔子洞之前,我想确认它们确实不是更好的方法。

更新 - 更多信息

目前正在尝试 2 个控制台应用程序。但是,最后我有一个 C#/Winforms 应用程序(如果有帮助,这个是.NET 4.0)我将连接到 Unity 进程(显然我无法控制)。我有一个由该工具和 Unity 使用的 DLL。我打算在其中创建一个允许工具访问对象的类(例如,如果我可以使用管道,我会从 Unity 调用这个类来创建管道,然后从工具连接到管道)。

对象本身本质上代表一个有限状态机,其描述是从 XML 文件加载的。可以从非常少量的数据中重新创建对象。但是,我宁愿避免手动编写一个解决方案,该解决方案使用某种事件/消息系统来使对象在哪个状态处于事件状态等方面保持同步。

最佳答案

我认为 WCF 与 NetNamedPipeBinding将是一个更容易/更好的选择。

示例 here .

关于c# - 在 C# 进程之间共享对象的推荐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21031138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com