Кто-нибудь знает реализацию с открытым исходным кодом в C #, использующую предварительную совместную память?.NET 4.0 (где у нас нет реализаций файлов с отображением в память.
Предпочтительно использовать индексы идентификаторов.
[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
Корпоративная библиотека имеет блок приложения для кэширования. Смотрите здесь: Microsoft Enterprise Library 5.0 - апрель 2010 для последней версии (.NET 3.5 и .NET 4). В более старых версиях этот блок приложения для кэширования также имеется, если у вас более низкие требования.
У вас есть несколько вариантов.
Я бы выбрал файлы с отображением в памяти, так как вы получите намного лучшую производительность. Все зависит от того, чего вы пытаетесь достичь. Взгляните на .NET Framework 4.0. реализация System.IO.MemoryMappedFile.