MemoryMappedFile.CreateNew Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Cria um ficheiro mapeado de memória na memória do sistema.
Sobrecargas
| Name | Description |
|---|---|
| CreateNew(String, Int64) |
Cria um ficheiro mapeado em memória que tem a capacidade especificada na memória do sistema. |
| CreateNew(String, Int64, MemoryMappedFileAccess) |
Cria um ficheiro mapeado em memória que tem a capacidade e o tipo de acesso especificados na memória do sistema. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Cria um ficheiro mapeado de memória que tem o nome especificado, capacidade, tipo de acesso, opções de alocação de memória e herdabilidade. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Cria um ficheiro mapeado em memória que tem a capacidade especificada, tipo de acesso, alocação de memória, permissões de segurança e herdabilidade na memória do sistema. |
CreateNew(String, Int64)
Cria um ficheiro mapeado em memória que tem a capacidade especificada na memória do sistema.
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
Parâmetros
- mapName
- String
Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.
- capacity
- Int64
O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória.
Devoluções
Um ficheiro mapeado em memória que tem o nome e capacidade especificados.
Exceções
mapName é uma corda vazia.
capacity é menor ou igual a zero.
.NET Core e .NET 5+ apenas: Chamadas ao método CreateNew com um ficheiro mapeado de memória nomeado (ou seja, um mapName não-nulo) são suportadas apenas em sistemas operativos Windows.
Exemplos
O exemplo seguinte é composto por três processos separados (aplicações de consola) que escrevem Boolean valores num ficheiro mapeado em memória. A seguinte sequência de ações ocorre:
- O Processo A cria o ficheiro mapeado em memória e escreve um valor nele.
- O Processo B abre o ficheiro mapeado em memória e escreve um valor nele.
- O processo C abre o ficheiro mapeado em memória e escreve um valor nele.
- O Processo A lê e apresenta os valores do ficheiro mapeado em memória.
- Depois de o Processo A terminar com o ficheiro mapeado em memória, o ficheiro é imediatamente recuperado pela recolha de lixo.
Para executar este exemplo, faça o seguinte:
- Compila as aplicações e abre três janelas de comando.
- Na primeira janela de Comandos, execute o Processo A.
- Na segunda janela de Comandos, execute o Processo B.
- Volte ao Processo A e pressione ENTER.
- Na terceira janela de Comandos, execute o Processo C.
- Volte ao Processo A e pressione ENTER.
A saída do Processo A é a seguinte:
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
Processo 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
Processo 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
Processo 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
Observações
Use este método para criar um ficheiro mapeado em memória que não seja persistido (ou seja, não esteja associado a um ficheiro no disco), que pode usar para partilhar dados entre processos.
Ver também
Aplica-se a
CreateNew(String, Int64, MemoryMappedFileAccess)
Cria um ficheiro mapeado em memória que tem a capacidade e o tipo de acesso especificados na memória do 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);
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
Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.
- capacity
- Int64
O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória.
- access
- MemoryMappedFileAccess
Um dos valores de enumeração que especifica o tipo de acesso permitido ao ficheiro mapeado em memória. A predefinição é ReadWrite.
Devoluções
Um ficheiro mapeado em memória que tem as características especificadas.
Exceções
mapName é uma corda vazia.
-ou-
access está definido para apenas escrita com o Write valor de enumeração.
capacity é menor ou igual a zero.
-ou-
access não é um valor de enumeração válido MemoryMappedFileAccess .
.NET Core e .NET 5+ apenas: Chamadas ao método CreateNew com um ficheiro mapeado de memória nomeado (ou seja, um mapName não-nulo) são suportadas apenas em sistemas operativos Windows.
Observações
Use este método para criar um ficheiro mapeado em memória que não seja persistido (ou seja, não esteja associado a um ficheiro no disco), que pode usar para partilhar dados entre processos.
Ver também
Aplica-se a
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
Cria um ficheiro mapeado de memória que tem o nome especificado, capacidade, tipo de acesso, opções de alocação de memória e herdabilidade.
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
Parâmetros
- mapName
- String
Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.
- capacity
- Int64
O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória.
- access
- MemoryMappedFileAccess
Um dos valores de enumeração que especifica o tipo de acesso permitido ao ficheiro mapeado em memória. A predefinição é ReadWrite.
- options
- MemoryMappedFileOptions
Uma combinação bit a bit de valores de enumeração que especifica opções de alocação de memória para o ficheiro mapeado em memória.
- inheritability
- HandleInheritability
Um valor que especifica se um handle do ficheiro mapeado em memória pode ser herdado por um processo filho. A predefinição é None.
Devoluções
Um ficheiro mapeado em memória que tem as características especificadas.
Exceções
mapName é uma corda vazia.
-ou-
access está definido para apenas escrita com o Write valor de enumeração.
capacity é menor ou igual a zero.
-ou-
access não é um valor de enumeração válido MemoryMappedFileAccess .
-ou-
inheritability não é um valor válido HandleInheritability .
.NET Core e .NET 5+ apenas: Chamadas ao método CreateNew com um ficheiro mapeado de memória nomeado (ou seja, um mapName não-nulo) são suportadas apenas em sistemas operativos Windows.
Aplica-se a
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
Cria um ficheiro mapeado em memória que tem a capacidade especificada, tipo de acesso, alocação de memória, permissões de segurança e herdabilidade na memória do 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
Um nome para atribuir ao ficheiro mapeado em memória, ou null para um MemoryMappedFile que não pretende partilhar entre processos.
- capacity
- Int64
O tamanho máximo, em bytes, a alocar ao ficheiro mapeado em memória.
- access
- MemoryMappedFileAccess
Um dos valores de enumeração que especifica o tipo de acesso permitido ao ficheiro mapeado em memória. A predefinição é ReadWrite.
- options
- MemoryMappedFileOptions
Uma combinação bit a bit de valores de enumeração que especifica opções de alocação de memória para o ficheiro mapeado em memória.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
As permissões que podem ser concedidas para acesso a ficheiros e operações em ficheiros mapeados em memória.
Este parâmetro pode ser null.
- inheritability
- HandleInheritability
Um dos valores de enumeração que especifica se um handle do ficheiro mapeado em memória pode ser herdado por um processo filho. A predefinição é None.
Devoluções
Um ficheiro mapeado em memória que tem as características especificadas.
- Atributos
Exceções
mapName é uma corda vazia.
-ou-
access está definido para apenas escrita com o Write valor de enumeração.
capacity é menor ou igual a zero.
-ou-
access não é um valor de enumeração válido MemoryMappedFileAccess .
-ou-
inheritability não é um valor de enumeração válido HandleInheritability .
Observações
Use este método para criar um ficheiro mapeado em memória que não seja persistido (ou seja, não esteja associado a um ficheiro no disco), que pode usar para partilhar dados entre processos.