有没有人知道使用共享内存的C#中的开源实现。 .NET 4.0(我们没有内存映射文件实现。
最好使用id索引。
答案 0 :(得分:2)
Enterprise Library有一个缓存应用程序块。请参阅此处:Microsoft Enterprise Library 5.0 – April 2010获取最新版本(.NET 3.5和.NET 4)。如果您的要求较低,旧版本也会有此缓存应用程序块。
答案 1 :(得分:2)
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr CreateFileMapping(
IntPtr hFile,
IntPtr lpFileMappingAttributes,
FileMapProtection flProtect,
uint dwMaximumSizeHigh,
uint dwMaximumSizeLow,
[MarshalAs(UnmanagedType.LPTStr)] string lpName);
请点击此处了解更多信息
http://www.pinvoke.net/default.aspx/kernel32.createfilemapping
和
http://msdn.microsoft.com/en-us/library/aa366551(v=vs.85).aspx
C#Cookbook包含SharedMemoryManager的实现,您可以在此处查看: http://csharp.codefetch.com/example/p1/MutexFun/SharedMemoryManager.cs
答案 2 :(得分:1)
你有几个选择。
我会选择内存映射文件,因为你会获得更好的性能。一切都取决于你想要达到的目标。看一下.NET Framework 4.0。 System.IO.MemoryMappedFile.
的实施