.net - 在 Windows 服务和应用程序之间共享内存,什么最简单?

标签 .net service .net-2.0 ipc shared-memory

我需要我的服务来更新共享内存中的字段,以便客户端应用程序读取和显示。由于 Session 0 Isolation,我发现我当前的解决方案无效.

我已将 mutex 重命名为es 在修复该元素的全局命名空间中,但它看起来好像 dll 不适合在 session 之间共享,尽管 session 0 隔离的一种解决方案是:

"Explicitly choose either the Local\ or Global\ namespace for any named objects, such as events or mapped memory that the service makes available."



我不知道 dll 的哪一部分可以归类为命名对象,并且需要很长时间才能继续重新安装并逐步检查它。

我看到了命名 channel 的代码卷并被推迟了。我不想创建一个触及磁盘的文件,因为我认为 memoryMappedFile 解决方案需要它。 dll 的共享部分可以工作吗?否则什么最简单?
public ref class ServerGUIBridge
{
public:
#pragma data_seg(".sdata")
    static int commonIntShouldBeGlobal = 0;
    static bool hasBeenInitializedMakeMeGlobal = false;
#pragma data_seg()
#pragma comment(linker, "/section:.sdata,rws")

我正在使用 .NET 2.0,所以请不要使用 WCF。

最佳答案

我建议命名管道:然后你在两个进程之间有适当的受控隔离。共享 DLL 听起来充满危险。

命名管道记录在 MSDN 上:http://msdn.microsoft.com/en-us/library/aa365590.aspx

一篇看起来很有用的 .NET 2.0 文章在这里:http://www.switchonthecode.com/tutorials/interprocess-communication-using-named-pipes-in-csharp

(请记住,.NET 3.5 及更高版本有一个 NetNamedPipeBinding 类 [http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx],它是 WCF 的一部分)

关于.net - 在 Windows 服务和应用程序之间共享内存,什么最简单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7807688/

相关文章:

.net - TabPages 中的工具条经常从 Windows 窗体设计器中消失

c# - 如何使用 onclick 事件发送值?

java - OSGI 服务异常行为

.net - 如果仅存在 .NET 2.0 RTM,运行时如何解析对 .NET 2.0 SP1 程序集的调用

winforms - "Enable the Visual Studio hosting"发布配置的进程编译选项

c# - Elasticsearch,如何让NEST map response to class

.net - 如果将redirectMode设为=“ResponseRewrite”,则不会将错误重定向到Http处理程序

.net - 如何获取请求重新启动的服务?

java - 在 Android 上保持应用程序在后台运行

architecture - 客户端(桌面应用程序)提取数据......但我希望服务器(网络应用程序)推送数据