c# - 如何使程序集的后续实例共享相同的内存?

标签 c# .net memory persistent

我想要类似静态类变量的东西,除非不同的应用程序加载我的程序集时我希望它们都共享同一个变量。

我知道我可以写入磁盘或数据库,但这是针对与 sql 查询一起使用的进程,它可能会减慢太多速度(实际上我要测试这些选项,但我问这个问题同时 b/c 我认为这不会是一个可以接受的解决方案。

我更愿意使用在部署中产生最少开销的解决方案,并且我不介意该解决方案是否不容易创建,只要它在我完成后易于使用即可。

我知道那里有一些持久内存框架。我还没有检查过其中任何一个,也许其中一个是完美的,所以请随意推荐一个。我也非常满足于自己编写一些东西,特别是如果它能让我更轻松地进行部署。

提前感谢您提出的所有建议!

编辑:看起来我忽略了一个非常简单的解决方案。我的问题涉及 SQL 只提供 8000 字节的空间来序列化我编写的 SQL 聚合函数调用之间的数据。我阅读了一篇关于如何压缩数据并充分利用这 8000 字节的文章,并认为我无能为力。事实证明,我可以设置 MaxBytes = -1 而不是 0 到 8000 之间的范围以获得最多 2gb 的空间。我相信这是他们在 3.5 框架中添加的新内容,因为有很多文章都在讨论这个 8000 字节的限制。

谢谢大家的回答,因为这是我过去出于其他原因想要解决的问题,现在我知道如果我需要一种非常简单快捷的方式在应用程序之间进行通信时该怎么做。

最佳答案

您不能将其存储为内存数据并在进程之间共享它,因为每个进程都有自己独立的内存地址空间。

然而,一个选择是使用 .NET Memory-mapped file支持“存储”共享数据。这将允许您在每个进程都可以访问的地方编写一个包含信息的文件。

关于c# - 如何使程序集的后续实例共享相同的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073776/

相关文章:

java - 监控每个线程的内存使用情况

c++ - 如何打印出C-String的内存地址?

c# - 使用 Linq C# Asp.net 显示来自不同表的数据

c# - DateTime.hasvalue vs datetime == null,哪个更好,为什么

c# - 我如何让它四舍五入而不是总是向下舍入?

c# - 使用 Mud Blazor,我如何在页面底部获得一个持久抽屉?

.net - 如何确定文件系统在 .net 中是否区分大小写?

c# - 使用 C# 实现 SQL 的动态参数计数

.net - Event.Trigger Event.Publish f#

performance - 缓存或寄存器 - 哪个更快?