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
- Исходный код:
- 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
Процесс A
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
- Исходный код:
- 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
- Исходный код:
- 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 значением перечисления.
Комментарии
Используйте этот метод для создания сопоставленного с памятью файла, который не сохраняется (т. е. не связан с файлом на диске), который можно использовать для совместного использования данных между процессами.