如何从另一个应用程序读取内存 - 共享数据

时间:2015-08-31 22:17:33

标签: c# memory visual-studio-2013 .net-3.5 windows-applications

我们可以读/写 内存中的数据,如下所示:

static void Main(string[] args)
{
    using (var ms = new MemoryStream())
    {
        var sw = new StreamWriter(ms);
        sw.WriteLine("Hello World");
        sw.Flush();
        ms.Position = 0;
        var sr = new StreamReader(ms);
        var myStr = sr.ReadToEnd();
        Console.WriteLine(myStr);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

现在我想在Ram(内存=随机存取存储器)上写入数据并从另一个应用程序中读取这些数据? 我怎么能这样做并在内存中分享一个字符串?

重要提示:我不想在硬盘上写任何数据 修改:我的.net版本为3.5

1 个答案:

答案 0 :(得分:0)

更新.net 3.5
内存映射文件已经在Windows中存在了一段时间,因此即使.net 3.5也没有它们,仍然可以包装本机api。 Github项目filemap就是这么做的。不幸的是,他们没有示例如何在两个进程之间共享内存映射文件。

<小时/> 此答案对.NET Framework 4.6和4.5
有用 不 3.5 我认为你不能在两个进程之间共享内存流。最接近的是memory mapped files。检查此answer以获取其他选项。