MemoryMappedFile.CreateNew Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Crea un archivo asignado a la memoria en la memoria del sistema.
Sobrecargas
CreateNew(String, Int64) |
Crea un archivo asignado a la memoria con la capacidad especificada en la memoria del sistema. |
CreateNew(String, Int64, MemoryMappedFileAccess) |
Crea un archivo asignado a la memoria con la capacidad y el tipo de acceso especificados en la memoria del sistema. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Crea un archivo asignado a la memoria que tiene el nombre, la capacidad, el tipo de acceso, las opciones de asignación de memoria y la cualidad de heredable que se especifiquen. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Crea un archivo asignado a la memoria con la capacidad, el tipo de acceso, la asignación de memoria, los permisos de seguridad y la herencia especificados en la memoria del sistema. |
CreateNew(String, Int64)
- Source:
- MemoryMappedFile.cs
- Source:
- MemoryMappedFile.cs
- Source:
- MemoryMappedFile.cs
Crea un archivo asignado a la memoria con la capacidad especificada en la memoria del sistema.
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
Parámetros
- mapName
- String
Nombre para asignar al archivo asignado a la memoria o null
para un MemoryMappedFile que no tiene intención de compartir entre procesos.
- capacity
- Int64
Tamaño máximo, en bytes, que se va a asignar al archivo asignado a la memoria.
Devoluciones
Archivo asignado a la memoria con el nombre y la capacidad especificados.
Excepciones
mapName
es una cadena vacía.
capacity
es menor o igual que cero.
Solo .NET Core y .NET 5+: las llamadas al CreateNew
método con un archivo asignado a memoria con nombre (es decir, un valor distinto de NULL mapName
) solo se admiten en sistemas operativos Windows.
Ejemplos
El ejemplo siguiente se compone de tres procesos independientes (aplicaciones de consola) que escriben Boolean
valores en un archivo asignado a memoria. Se produce la siguiente secuencia de acciones:
El proceso A crea el archivo asignado a memoria y escribe un valor en él.
El proceso B abre el archivo asignado a memoria y escribe un valor en él.
El proceso C abre el archivo asignado a memoria y escribe un valor en él.
Procesar lecturas y muestra los valores del archivo asignado a memoria.
Una vez finalizado el proceso A con el archivo asignado a memoria, la recolección de elementos no utilizados recupera inmediatamente el archivo.
Para ejecutar este ejemplo, haga lo siguiente:
Compile las aplicaciones y abra tres ventanas de comandos.
En la primera ventana Comando, ejecute Process A.
En la segunda ventana Comando, ejecute Proceso B.
Vuelva al proceso A y presione ENTRAR.
En la tercera ventana Comando, ejecute Proceso C.
Vuelva al proceso A y presione ENTRAR.
La salida del proceso A es la siguiente:
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 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 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 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
Comentarios
Use este método para crear un archivo asignado a memoria que no se conserve (es decir, no asociado a un archivo en el disco), que puede usar para compartir datos entre procesos.
Consulte también
Se aplica a
CreateNew(String, Int64, MemoryMappedFileAccess)
- Source:
- MemoryMappedFile.cs
- Source:
- MemoryMappedFile.cs
- Source:
- MemoryMappedFile.cs
Crea un archivo asignado a la memoria con la capacidad y el tipo de acceso especificados en la memoria del sistema.
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
Parámetros
- mapName
- String
Nombre para asignar al archivo asignado a la memoria o null
para un MemoryMappedFile que no tiene intención de compartir entre procesos.
- capacity
- Int64
Tamaño máximo, en bytes, que se va a asignar al archivo asignado a la memoria.
- access
- MemoryMappedFileAccess
Uno de los valores de enumeración que especifica el tipo de acceso permitido para el archivo asignado a la memoria. De manera predeterminada, es ReadWrite.
Devoluciones
Archivo asignado a la memoria que tiene las características especificadas.
Excepciones
mapName
es una cadena vacía.
o bien
access
se establece como de solo escritura con el valor de enumeración Write.
capacity
es menor o igual que cero.
o bien
access
no es un valor de enumeración MemoryMappedFileAccess válido.
Solo .NET Core y .NET 5+: las llamadas al CreateNew
método con un archivo asignado a memoria con nombre (es decir, un valor distinto de NULL mapName
) solo se admiten en sistemas operativos Windows.
Comentarios
Use este método para crear un archivo asignado a memoria que no se conserve (es decir, no asociado a un archivo en el disco), que puede usar para compartir datos entre procesos.
Consulte también
Se aplica a
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
- Source:
- MemoryMappedFile.cs
- Source:
- MemoryMappedFile.cs
- Source:
- MemoryMappedFile.cs
Crea un archivo asignado a la memoria que tiene el nombre, la capacidad, el tipo de acceso, las opciones de asignación de memoria y la cualidad de heredable que se especifiquen.
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
Parámetros
- mapName
- String
Nombre para asignar al archivo asignado a la memoria o null
para un MemoryMappedFile que no tiene intención de compartir entre procesos.
- capacity
- Int64
Tamaño máximo, en bytes, que se va a asignar al archivo asignado a la memoria.
- access
- MemoryMappedFileAccess
Uno de los valores de enumeración que especifica el tipo de acceso permitido para el archivo asignado a la memoria. De manera predeterminada, es ReadWrite.
- options
- MemoryMappedFileOptions
Combinación bit a bit de valores de enumeración que especifica las opciones de asignación de memoria para el archivo asignado a la memoria.
- inheritability
- HandleInheritability
Valor que especifica si un proceso secundario puede heredar un identificador para el archivo asignado a la memoria. De manera predeterminada, es None.
Devoluciones
Archivo asignado a la memoria que tiene las características especificadas.
Excepciones
mapName
es una cadena vacía.
o bien
access
se establece como de solo escritura con el valor de enumeración Write.
capacity
es menor o igual que cero.
o bien
access
no es un valor de enumeración MemoryMappedFileAccess válido.
o bien
inheritability
no es un valor HandleInheritability válido.
Solo .NET Core y .NET 5+: las llamadas al CreateNew
método con un archivo asignado a memoria con nombre (es decir, un valor distinto de NULL mapName
) solo se admiten en sistemas operativos Windows.
Se aplica a
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
Crea un archivo asignado a la memoria con la capacidad, el tipo de acceso, la asignación de memoria, los permisos de seguridad y la herencia especificados en la memoria del sistema.
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
Parámetros
- mapName
- String
Nombre para asignar al archivo asignado a la memoria o null
para un MemoryMappedFile que no tiene intención de compartir entre procesos.
- capacity
- Int64
Tamaño máximo, en bytes, que se va a asignar al archivo asignado a la memoria.
- access
- MemoryMappedFileAccess
Uno de los valores de enumeración que especifica el tipo de acceso permitido para el archivo asignado a la memoria. De manera predeterminada, es ReadWrite.
- options
- MemoryMappedFileOptions
Combinación bit a bit de valores de enumeración que especifica las opciones de asignación de memoria para el archivo asignado a la memoria.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
Permisos que se pueden conceder para el acceso a archivos y las operaciones en los archivos asignados a la memoria.
Este parámetro puede ser null
.
- inheritability
- HandleInheritability
Uno de los valores de enumeración que especifica si un proceso secundario puede heredar un identificador para el archivo asignado a la memoria. De manera predeterminada, es None.
Devoluciones
Archivo asignado a la memoria que tiene las características especificadas.
- Atributos
Excepciones
mapName
es una cadena vacía.
o bien
access
se establece como de solo escritura con el valor de enumeración Write.
capacity
es menor o igual que cero.
o bien
access
no es un valor de enumeración MemoryMappedFileAccess válido.
o bien
inheritability
no es un valor de enumeración HandleInheritability válido.
Comentarios
Use este método para crear un archivo asignado a memoria que no se conserve (es decir, no asociado a un archivo en el disco), que puede usar para compartir datos entre procesos.