MemoryMappedFile.CreateNew Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает сопоставленный с памятью файл в системной памяти.
Перегрузки
CreateNew(String, Int64) |
Создает сопоставленный с памятью файл с указанной емкостью в системной памяти. |
CreateNew(String, Int64, MemoryMappedFileAccess) |
Создает сопоставленный с памятью файл с указанной емкостью и типом доступа в системной памяти. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Создает сопоставленный с памятью файл с указанным именем, емкостью, типом доступа, параметрами выделения памяти и наследованием. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Создает сопоставленный с памятью файл с указанной емкостью, типом доступа, выделением памяти, разрешениями безопасности и наследованием в системной памяти. |
CreateNew(String, Int64)
- Исходный код:
- MemoryMappedFile.cs
- Исходный код:
- MemoryMappedFile.cs
- Исходный код:
- MemoryMappedFile.cs
Создает сопоставленный с памятью файл с указанной емкостью в системной памяти.
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string? mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity);
static member CreateNew : string * int64 -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long) As MemoryMappedFile
Параметры
- mapName
- String
Имя, назначаемое файлу, сопоставленном с памятью, или null
для MemoryMappedFile, к которым вы не планируете предоставлять общий доступ в разных процессах.
- capacity
- Int64
Максимальный размер в байтах для выделения сопоставленного с памятью файла.
Возвращаемое значение
Сопоставленный с памятью файл с указанным именем и емкостью.
Исключения
mapName
является пустой строкой.
capacity
меньше нуля или равно нулю.
Только .NET Core и .NET 5+ : вызовы метода CreateNew
с именованным файлом, сопоставленным с памятью (то есть непустую mapName
) поддерживаются только в операционных системах Windows.
Примеры
Следующий пример состоит из трех отдельных процессов (консольных приложений), которые записывают Boolean
значения в сопоставленный с памятью файл. Происходит следующая последовательность действий:
Процесс A создает сопоставленный с памятью файл и записывает в него значение.
Процесс B открывает сопоставленный с памятью файл и записывает в него значение.
Процесс C открывает сопоставленный с памятью файл и записывает в него значение.
Обработка операций чтения и отображения значений из сопоставленного с памятью файла.
После завершения процесса A сопоставленный с памятью файл немедленно удаляется сборкой мусора.
Чтобы выполнить этот пример, сделайте следующее:
Скомпилируйте приложения и откройте три окна команд.
В первом командном окне выполните команду A.
Во втором окне командной строки выполните процедуру B.
Вернитесь к процессу A и нажмите клавишу ВВОД.
В третьем окне команды выполните процедуру C.
Вернитесь к процессу A и нажмите клавишу ВВОД.
Выходные данные Process A приведены следующим образом:
Start Process B and press ENTER to continue.
Start Process C and press ENTER to continue.
Process A says: True
Process B says: False
Process C says: True
Обработка
using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Threading;
class Program
{
// Process A:
static void Main(string[] args)
{
using (MemoryMappedFile mmf = MemoryMappedFile.CreateNew("testmap", 10000))
{
bool mutexCreated;
Mutex mutex = new Mutex(true, "testmapmutex", out mutexCreated);
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(1);
}
mutex.ReleaseMutex();
Console.WriteLine("Start Process B and press ENTER to continue.");
Console.ReadLine();
Console.WriteLine("Start Process C and press ENTER to continue.");
Console.ReadLine();
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream())
{
BinaryReader reader = new BinaryReader(stream);
Console.WriteLine("Process A says: {0}", reader.ReadBoolean());
Console.WriteLine("Process B says: {0}", reader.ReadBoolean());
Console.WriteLine("Process C says: {0}", reader.ReadBoolean());
}
mutex.ReleaseMutex();
}
}
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Threading
Module Module1
' Process A:
Sub Main()
Using mmf As MemoryMappedFile = MemoryMappedFile.CreateNew("testmap", 10000)
Dim mutexCreated As Boolean
Dim mTex As Mutex = New Mutex(True, "testmapmutex", mutexCreated)
Using Stream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim writer As BinaryWriter = New BinaryWriter(Stream)
writer.Write(1)
End Using
mTex.ReleaseMutex()
Console.WriteLine("Start Process B and press ENTER to continue.")
Console.ReadLine()
Console.WriteLine("Start Process C and press ENTER to continue.")
Console.ReadLine()
mTex.WaitOne()
Using Stream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim reader As BinaryReader = New BinaryReader(Stream)
Console.WriteLine("Process A says: {0}", reader.ReadBoolean())
Console.WriteLine("Process B says: {0}", reader.ReadBoolean())
Console.WriteLine("Process C says: {0}", reader.ReadBoolean())
End Using
mTex.ReleaseMutex()
End Using
End Sub
End Module
Процесс B
using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Threading;
class Program
{
// Process B:
static void Main(string[] args)
{
try
{
using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("testmap"))
{
Mutex mutex = Mutex.OpenExisting("testmapmutex");
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream(1, 0))
{
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(0);
}
mutex.ReleaseMutex();
}
}
catch (FileNotFoundException)
{
Console.WriteLine("Memory-mapped file does not exist. Run Process A first.");
}
}
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Threading
Module Module1
' Process B:
Sub Main()
Try
Using mmf As MemoryMappedFile = MemoryMappedFile.OpenExisting("testmap")
Dim mTex As Mutex = Mutex.OpenExisting("testmapmutex")
mTex.WaitOne()
Using Stream As MemoryMappedViewStream = mmf.CreateViewStream(1, 0)
Dim writer As BinaryWriter = New BinaryWriter(Stream)
writer.Write(0)
End Using
mTex.ReleaseMutex()
End Using
Catch noFile As FileNotFoundException
Console.WriteLine("Memory-mapped file does not exist. Run Process A first." & vbCrLf & noFile.Message)
End Try
End Sub
End Module
процесс C
using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Threading;
class Program
{
// Process C:
static void Main(string[] args)
{
try
{
using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("testmap"))
{
Mutex mutex = Mutex.OpenExisting("testmapmutex");
mutex.WaitOne();
using (MemoryMappedViewStream stream = mmf.CreateViewStream(2, 0))
{
BinaryWriter writer = new BinaryWriter(stream);
writer.Write(1);
}
mutex.ReleaseMutex();
}
}
catch (FileNotFoundException)
{
Console.WriteLine("Memory-mapped file does not exist. Run Process A first, then B.");
}
}
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Threading
Module Module1
' Process C:
Sub Main()
Try
Using mmf As MemoryMappedFile = MemoryMappedFile.OpenExisting("testmap")
Dim mTex As Mutex = Mutex.OpenExisting("testmapmutex")
mTex.WaitOne()
Using Stream As MemoryMappedViewStream = mmf.CreateViewStream(2, 0)
Dim writer As BinaryWriter = New BinaryWriter(Stream)
writer.Write(1)
End Using
mTex.ReleaseMutex()
End Using
Catch noFile As FileNotFoundException
Console.WriteLine("Memory-mapped file does not exist. Run Process A first, then B." & vbCrLf & noFile.Message)
End Try
End Sub
End Module
Комментарии
Используйте этот метод для создания сопоставленного с памятью файла, который не сохраняется (т. е. не связан с файлом на диске), который можно использовать для совместного использования данных между процессами.
См. также раздел
Применяется к
CreateNew(String, Int64, MemoryMappedFileAccess)
- Исходный код:
- MemoryMappedFile.cs
- Исходный код:
- MemoryMappedFile.cs
- Исходный код:
- MemoryMappedFile.cs
Создает сопоставленный с памятью файл с указанной емкостью и типом доступа в системной памяти.
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long, access As MemoryMappedFileAccess) As MemoryMappedFile
Параметры
- mapName
- String
Имя, назначаемое файлу, сопоставленном с памятью, или null
для MemoryMappedFile, к которым вы не планируете предоставлять общий доступ в разных процессах.
- capacity
- Int64
Максимальный размер в байтах для выделения сопоставленного с памятью файла.
- access
- MemoryMappedFileAccess
Одно из значений перечисления, указывающее тип доступа, разрешенный для сопоставленного с памятью файла. Значение по умолчанию — ReadWrite.
Возвращаемое значение
Сопоставленный с памятью файл с указанными характеристиками.
Исключения
mapName
является пустой строкой.
-или-
access
задано значение только для записи со значением перечисления Write.
capacity
меньше нуля или равно нулю.
-или-
access
не является допустимым значением перечисления MemoryMappedFileAccess.
Только .NET Core и .NET 5+ : вызовы метода CreateNew
с именованным файлом, сопоставленным с памятью (то есть непустую mapName
) поддерживаются только в операционных системах Windows.
Комментарии
Используйте этот метод для создания сопоставленного с памятью файла, который не сохраняется (т. е. не связан с файлом на диске), который можно использовать для совместного использования данных между процессами.
См. также раздел
Применяется к
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
- Исходный код:
- MemoryMappedFile.cs
- Исходный код:
- MemoryMappedFile.cs
- Исходный код:
- MemoryMappedFile.cs
Создает сопоставленный с памятью файл с указанным именем, емкостью, типом доступа, параметрами выделения памяти и наследованием.
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileOptions options, System::IO::HandleInheritability inheritability);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.HandleInheritability inheritability);
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileOptions * System.IO.HandleInheritability -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long, access As MemoryMappedFileAccess, options As MemoryMappedFileOptions, inheritability As HandleInheritability) As MemoryMappedFile
Параметры
- mapName
- String
Имя, назначаемое файлу, сопоставленном с памятью, или null
для MemoryMappedFile, к которым вы не планируете предоставлять общий доступ в разных процессах.
- capacity
- Int64
Максимальный размер в байтах для выделения сопоставленного с памятью файла.
- access
- MemoryMappedFileAccess
Одно из значений перечисления, указывающее тип доступа, разрешенный для сопоставленного с памятью файла. Значение по умолчанию — ReadWrite.
- options
- MemoryMappedFileOptions
Побитовое сочетание значений перечисления, указывающее параметры выделения памяти для сопоставленного с памятью файла.
- inheritability
- HandleInheritability
Значение, указывающее, может ли дескриптор сопоставленного с памятью файла наследоваться дочерним процессом. Значение по умолчанию — None.
Возвращаемое значение
Сопоставленный с памятью файл с указанными характеристиками.
Исключения
mapName
является пустой строкой.
-или-
access
задано значение только для записи со значением перечисления Write.
capacity
меньше нуля или равно нулю.
-или-
access
не является допустимым значением перечисления MemoryMappedFileAccess.
-или-
inheritability
не является допустимым значением HandleInheritability.
Только .NET Core и .NET 5+ : вызовы метода CreateNew
с именованным файлом, сопоставленным с памятью (то есть непустую mapName
) поддерживаются только в операционных системах Windows.
Применяется к
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
Создает сопоставленный с памятью файл с указанной емкостью, типом доступа, выделением памяти, разрешениями безопасности и наследованием в системной памяти.
public:
static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileOptions options, System::IO::MemoryMappedFiles::MemoryMappedFileSecurity ^ memoryMappedFileSecurity, System::IO::HandleInheritability inheritability);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileOptions options, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity memoryMappedFileSecurity, System.IO.HandleInheritability inheritability);
[<System.Security.SecurityCritical>]
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileOptions * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateNew (mapName As String, capacity As Long, access As MemoryMappedFileAccess, options As MemoryMappedFileOptions, memoryMappedFileSecurity As MemoryMappedFileSecurity, inheritability As HandleInheritability) As MemoryMappedFile
Параметры
- mapName
- String
Имя, назначаемое файлу, сопоставленном с памятью, или null
для MemoryMappedFile, к которым вы не планируете предоставлять общий доступ в разных процессах.
- capacity
- Int64
Максимальный размер в байтах для выделения сопоставленного с памятью файла.
- access
- MemoryMappedFileAccess
Одно из значений перечисления, указывающее тип доступа, разрешенный для сопоставленного с памятью файла. Значение по умолчанию — ReadWrite.
- options
- MemoryMappedFileOptions
Побитовое сочетание значений перечисления, указывающее параметры выделения памяти для сопоставленного с памятью файла.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
Разрешения, которые можно предоставить для доступа к файлам и операций с файлами, сопоставленными с памятью.
Этот параметр может быть null
.
- inheritability
- HandleInheritability
Одно из значений перечисления, указывающее, можно ли наследовать дескриптор сопоставленного с памятью файла дочерним процессом. Значение по умолчанию — None.
Возвращаемое значение
Сопоставленный с памятью файл с указанными характеристиками.
- Атрибуты
Исключения
mapName
является пустой строкой.
-или-
access
задано значение только для записи со значением перечисления Write.
capacity
меньше нуля или равно нулю.
-или-
access
не является допустимым значением перечисления MemoryMappedFileAccess.
-или-
inheritability
не является допустимым значением перечисления HandleInheritability.
Комментарии
Используйте этот метод для создания сопоставленного с памятью файла, который не сохраняется (т. е. не связан с файлом на диске), который можно использовать для совместного использования данных между процессами.