MemoryMappedFile.CreateNew MemoryMappedFile.CreateNew MemoryMappedFile.CreateNew MemoryMappedFile.CreateNew Method

Определение

Создает размещенный в памяти файл в системной памяти.Creates a memory-mapped file in system memory.

Перегрузки

CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64)

Создает размещенный в памяти файл с заданной емкостью в системной памяти.Creates a memory-mapped file that has the specified capacity in system memory.

CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess)

Создает размещенный в памяти файл с заданной емкостью и типом доступа в системной памяти.Creates a memory-mapped file that has the specified capacity and access type in system memory.

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

Создает отображенный в память файл с заданными именем, емкостью, типом доступа, параметрами выделения памяти и режимом наследования.Creates a memory-mapped file that has the specified name, capacity, access type, memory allocation options and inheritability.

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

Создает размещенный в памяти файл с заданной емкостью, типом доступа, выделением памяти, настройками безопасности и режимом наследования в системной памяти.Creates a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.

CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64) CreateNew(String, Int64)

Создает размещенный в памяти файл с заданной емкостью в системной памяти.Creates a memory-mapped file that has the specified capacity in system memory.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateNew(System::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 String String String

Имя, присваиваемое отображенному в память файлу, или null для MemoryMappedFile, которое не будет использоваться совместно с другими процессами.A name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

Максимальный размер, выделяемый размещенному в памяти файлу, в байтах.The maximum size, in bytes, to allocate to the memory-mapped file.

Возвраты

Размещенный в памяти файл с заданными именем и емкостью.A memory-mapped file that has the specified name and capacity.

Исключения

Параметр mapName равен пустой строке.mapName is an empty string.

Значение capacity не больше нуля.capacity is less than or equal to zero.

Только в .NET Core: Вызовы метода CreateNew с именем отображенного в памяти файла (то есть не равного NULL mapName) поддерживаются только в операционных системах Windows..NET Core only: Calls to the CreateNew method with a named memory mapped file (that is, a non-null mapName) are supported on Windows operating systems only.

Примеры

Следующий пример состоит из трех отдельных процессов (консольных приложений), которые записывают Boolean значения в отображенный в память файл.The following example is composed of three separate processes (console applications) that write Boolean values to a memory-mapped file. Последовательность действий следующая:The following sequence of actions occur:

  1. Process создает файл, отображенный в памяти, и записывает в него значение.Process A creates the memory-mapped file and writes a value to it.

  2. Процесс б открывает отображенный в память файл и записывает в него значение.Process B opens the memory-mapped file and writes a value to it.

  3. Процесс C открывает отображенный в память файл и записывает в него значение.Process C opens the memory-mapped file and writes a value to it.

  4. Обрабатывает операции чтения и отображения значений из отображенного в память файла.Process A reads and displays the values from the memory-mapped file.

  5. После завершения процесса A с размещенным в памяти файлом файл немедленно освобождается сборщиком мусора.After Process A is finished with the memory-mapped file, the file is immediately reclaimed by garbage collection.

Чтобы выполнить этот пример, сделайте следующее:To run this example, do the following:

  1. Скомпилируйте приложения и откройте три окна команд.Compile the applications and open three Command windows.

  2. В первом командное окно запустите процесс A.In the first Command window, run Process A.

  3. Во втором командное окно запустите процесс B.In the second Command window, run Process B.

  4. Вернитесь к обработке и нажмите клавишу ВВОД.Return to Process A and press ENTER.

  5. В третьем командное окно запустите процесс C.In the third Command window, run Process C.

  6. Вернитесь к обработке и нажмите клавишу ВВОД.Return to Process A and press ENTER.

Выходные данные процесса A выглядят следующим образом:The output of Process A is as follows:

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  

Process AProcess 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

Process BProcess 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

Process CProcess 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

Комментарии

Этот метод используется для создания размещенного в памяти файла, который не сохраняется (то есть не связан с файлом на диске), который можно использовать для обмена данными между процессами.Use this method to create a memory-mapped file that is not persisted (that is, not associated with a file on disk), which you can use to share data between processes.

Дополнительно

CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess) CreateNew(String, Int64, MemoryMappedFileAccess)

Создает размещенный в памяти файл с заданной емкостью и типом доступа в системной памяти.Creates a memory-mapped file that has the specified capacity and access type in system memory.

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);
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 String String String

Имя, присваиваемое отображенному в память файлу, или null для MemoryMappedFile, которое не будет использоваться совместно с другими процессами.A name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

Максимальный размер, выделяемый размещенному в памяти файлу, в байтах.The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

Одно из значений перечисления, определяющее разрешенный тип доступа к размещенному в памяти файлу.One of the enumeration values that specifies the type of access allowed to the memory-mapped file. Значение по умолчанию — ReadWrite.The default is ReadWrite.

Возвраты

Размещенный в памяти файл с заданными характеристиками.A memory-mapped file that has the specified characteristics.

Исключения

Параметр mapName равен пустой строке.mapName is an empty string.

-или--or- Параметр access доступен только на запись значением перечисления Write.access is set to write-only with the Write enumeration value.

Значение capacity не больше нуля.capacity is less than or equal to zero.

-или--or- access не является допустимым значением перечисления MemoryMappedFileAccess.access is not a valid MemoryMappedFileAccess enumeration value.

Только в .NET Core: Вызовы метода CreateNew с именем отображенного в памяти файла (то есть не равного NULL mapName) поддерживаются только в операционных системах Windows..NET Core only: Calls to the CreateNew method with a named memory mapped file (that is, a non-null mapName) are supported on Windows operating systems only.

Комментарии

Этот метод используется для создания размещенного в памяти файла, который не сохраняется (то есть не связан с файлом на диске), который можно использовать для обмена данными между процессами.Use this method to create a memory-mapped file that is not persisted (that is, not associated with a file on disk), which you can use to share data between processes.

Дополнительно

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

Создает отображенный в память файл с заданными именем, емкостью, типом доступа, параметрами выделения памяти и режимом наследования.Creates a memory-mapped file that has the specified name, capacity, access type, memory allocation options and inheritability.

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);
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 String String String

Имя, присваиваемое отображенному в память файлу, или null для MemoryMappedFile, которое не будет использоваться совместно с другими процессами.A name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

Максимальный размер, выделяемый размещенному в памяти файлу, в байтах.The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

Одно из значений перечисления, определяющее разрешенный тип доступа к размещенному в памяти файлу.One of the enumeration values that specifies the type of access allowed to the memory-mapped file. Значение по умолчанию — ReadWrite.The default is ReadWrite.

options
MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions

Побитовое сочетание значений перечисления, которое задает параметры выделения памяти для размещенного в памяти файла.A bitwise combination of enumeration values that specifies memory allocation options for the memory-mapped file.

inheritability
HandleInheritability HandleInheritability HandleInheritability HandleInheritability

Значение, которое указывает, может ли дескриптор отображенного в память файла наследоваться дочерним процессом.A value that specifies whether a handle to the memory-mapped file can be inherited by a child process. Значение по умолчанию — None.The default is None.

Возвраты

Размещенный в памяти файл с заданными характеристиками.A memory-mapped file that has the specified characteristics.

Исключения

Параметр mapName равен пустой строке.mapName is an empty string.

- или --or- Параметр access доступен только на запись значением перечисления Write.access is set to write-only with the Write enumeration value.

Значение capacity не больше нуля.capacity is less than or equal to zero.

-или--or- access не является допустимым значением перечисления MemoryMappedFileAccess.access is not a valid MemoryMappedFileAccess enumeration value.

- или --or- inheritability не является допустимым значением HandleInheritability.inheritability is not a valid HandleInheritability value.

Только в .NET Core: Вызовы метода CreateNew с именем отображенного в памяти файла (то есть не равного NULL mapName) поддерживаются только в операционных системах Windows..NET Core only: Calls to the CreateNew method with a named memory mapped file (that is, a non-null mapName) are supported on Windows operating systems only.

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

Создает размещенный в памяти файл с заданной емкостью, типом доступа, выделением памяти, настройками безопасности и режимом наследования в системной памяти.Creates a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.

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);
static member CreateNew : string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileOptions * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability -> System.IO.MemoryMappedFiles.MemoryMappedFile

Параметры

mapName
String String String String

Имя, присваиваемое отображенному в память файлу, или null для MemoryMappedFile, которое не будет использоваться совместно с другими процессами.A name to assign to the memory-mapped file, or null for a MemoryMappedFile that you do not intend to share across processes.

capacity
Int64 Int64 Int64 Int64

Максимальный размер, выделяемый размещенному в памяти файлу, в байтах.The maximum size, in bytes, to allocate to the memory-mapped file.

access
MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess MemoryMappedFileAccess

Одно из значений перечисления, определяющее разрешенный тип доступа к размещенному в памяти файлу.One of the enumeration values that specifies the type of access allowed to the memory-mapped file. Значение по умолчанию — ReadWrite.The default is ReadWrite.

options
MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions MemoryMappedFileOptions

Побитовое сочетание значений перечисления, которое задает параметры выделения памяти для размещенного в памяти файла.A bitwise combination of enumeration values that specifies memory allocation options for the memory-mapped file.

memoryMappedFileSecurity
MemoryMappedFileSecurity MemoryMappedFileSecurity MemoryMappedFileSecurity MemoryMappedFileSecurity

Разрешения, которые могут быть предоставлены для доступа к файлам и операций с размещенными в памяти файлами.The permissions that can be granted for file access and operations on memory-mapped files.

Этот параметр может иметь значение null.This parameter can be null.

inheritability
HandleInheritability HandleInheritability HandleInheritability HandleInheritability

Одно из значений перечисления, определяющее, может ли дескриптор размещенного в памяти файла наследоваться дочерним процессом.One of the enumeration values that specifies whether a handle to the memory-mapped file can be inherited by a child process. Значение по умолчанию — None.The default is None.

Возвраты

Размещенный в памяти файл с заданными характеристиками.A memory-mapped file that has the specified characteristics.

Исключения

Параметр mapName равен пустой строке.mapName is an empty string.

- или --or- Параметр access доступен только на запись значением перечисления Write.access is set to write-only with the Write enumeration value.

Значение capacity не больше нуля.capacity is less than or equal to zero.

-или--or- access не является допустимым значением перечисления MemoryMappedFileAccess.access is not a valid MemoryMappedFileAccess enumeration value.

- или --or- inheritability не является допустимым значением перечисления HandleInheritability.inheritability is not a valid HandleInheritability enumeration value.

Комментарии

Этот метод используется для создания размещенного в памяти файла, который не сохраняется (то есть не связан с файлом на диске), который можно использовать для обмена данными между процессами.Use this method to create a memory-mapped file that is not persisted (that is, not associated with a file on disk), which you can use to share data between processes.

Безопасность

SecurityPermission
для доступа к неуправляемому коду.for access to unmanaged code. Связанное перечисление: UnmanagedCode.Associated enumeration: UnmanagedCode.

Дополнительно

Применяется к