MemoryMappedFile.CreateNew Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea un file mappato alla memoria in memoria.
Overload
| Nome | Descrizione |
|---|---|
| CreateNew(String, Int64) |
Crea un file mappato alla memoria con la capacità specificata nella memoria di sistema. |
| CreateNew(String, Int64, MemoryMappedFileAccess) |
Crea un file mappato alla memoria con la capacità e il tipo di accesso specificati nella memoria di sistema. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Crea un file mappato alla memoria con il nome, la capacità, il tipo di accesso, le opzioni di allocazione della memoria e l'ereditarietà specificati. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Crea un file mappato alla memoria con la capacità specificata, il tipo di accesso, l'allocazione della memoria, le autorizzazioni di sicurezza e l'ereditarietà nella memoria di sistema. |
CreateNew(String, Int64)
Crea un file mappato alla memoria con la capacità specificata nella memoria di 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
Parametri
- mapName
- String
Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.
- capacity
- Int64
Dimensione massima, in byte, da allocare al file mappato alla memoria.
Valori restituiti
File mappato alla memoria con il nome e la capacità specificati.
Eccezioni
mapName è una stringa vuota.
capacity è minore o uguale a zero.
solo .NET Core e .NET 5+: le chiamate al metodo CreateNew con un file mappato alla memoria denominato (ovvero un mapName non Null) sono supportate solo nei sistemi operativi Windows.
Esempio
L'esempio seguente è costituito da tre processi separati (applicazioni console) che scrivono Boolean valori in un file mappato alla memoria. Si verifica la sequenza di azioni seguente:
- Il processo A crea il file mappato alla memoria e ne scrive un valore.
- Il processo B apre il file mappato alla memoria e ne scrive un valore.
- Il processo C apre il file mappato alla memoria e ne scrive un valore.
- Elabora A legge e visualizza i valori del file mappato alla memoria.
- Al termine del processo A con il file mappato alla memoria, il file viene immediatamente recuperato da Garbage Collection.
Per eseguire questo esempio, eseguire le operazioni seguenti:
- Compilare le applicazioni e aprire tre finestre di comando.
- Nella prima finestra di comando eseguire Process A.
- Nella seconda finestra comando eseguire Processo B.
- Tornare al processo A e premere INVIO.
- Nella terza finestra comando eseguire Process C.
- Tornare al processo A e premere INVIO.
L'output del processo A è il seguente:
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
Commenti
Usare questo metodo per creare un file mappato alla memoria che non è persistente( ovvero non associato a un file su disco), che è possibile usare per condividere i dati tra processi.
Vedi anche
Si applica a
CreateNew(String, Int64, MemoryMappedFileAccess)
Crea un file mappato alla memoria con la capacità e il tipo di accesso specificati nella memoria di 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
Parametri
- mapName
- String
Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.
- capacity
- Int64
Dimensione massima, in byte, da allocare al file mappato alla memoria.
- access
- MemoryMappedFileAccess
Uno dei valori di enumerazione che specifica il tipo di accesso consentito al file mappato alla memoria. Il valore predefinito è ReadWrite.
Valori restituiti
File mappato alla memoria con le caratteristiche specificate.
Eccezioni
mapName è una stringa vuota.
oppure
access è impostato su write-only con il valore di Write enumerazione .
capacity è minore o uguale a zero.
oppure
access non è un valore di enumerazione valido MemoryMappedFileAccess .
solo .NET Core e .NET 5+: le chiamate al metodo CreateNew con un file mappato alla memoria denominato (ovvero un mapName non Null) sono supportate solo nei sistemi operativi Windows.
Commenti
Usare questo metodo per creare un file mappato alla memoria che non è persistente( ovvero non associato a un file su disco), che è possibile usare per condividere i dati tra processi.
Vedi anche
Si applica a
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
Crea un file mappato alla memoria con il nome, la capacità, il tipo di accesso, le opzioni di allocazione della memoria e l'ereditarietà specificati.
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
Parametri
- mapName
- String
Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.
- capacity
- Int64
Dimensione massima, in byte, da allocare al file mappato alla memoria.
- access
- MemoryMappedFileAccess
Uno dei valori di enumerazione che specifica il tipo di accesso consentito al file mappato alla memoria. Il valore predefinito è ReadWrite.
- options
- MemoryMappedFileOptions
Combinazione bit per bit di valori di enumerazione che specifica le opzioni di allocazione della memoria per il file mappato alla memoria.
- inheritability
- HandleInheritability
Valore che specifica se un handle per il file mappato alla memoria può essere ereditato da un processo figlio. Il valore predefinito è None.
Valori restituiti
File mappato alla memoria con le caratteristiche specificate.
Eccezioni
mapName è una stringa vuota.
oppure
access è impostato su write-only con il valore di Write enumerazione .
capacity è minore o uguale a zero.
oppure
access non è un valore di enumerazione valido MemoryMappedFileAccess .
oppure
inheritability non è un valore valido HandleInheritability .
solo .NET Core e .NET 5+: le chiamate al metodo CreateNew con un file mappato alla memoria denominato (ovvero un mapName non Null) sono supportate solo nei sistemi operativi Windows.
Si applica a
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
Crea un file mappato alla memoria con la capacità specificata, il tipo di accesso, l'allocazione della memoria, le autorizzazioni di sicurezza e l'ereditarietà nella memoria di 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
Parametri
- mapName
- String
Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.
- capacity
- Int64
Dimensione massima, in byte, da allocare al file mappato alla memoria.
- access
- MemoryMappedFileAccess
Uno dei valori di enumerazione che specifica il tipo di accesso consentito al file mappato alla memoria. Il valore predefinito è ReadWrite.
- options
- MemoryMappedFileOptions
Combinazione bit per bit di valori di enumerazione che specifica le opzioni di allocazione della memoria per il file mappato alla memoria.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
Autorizzazioni che possono essere concesse per l'accesso ai file e le operazioni sui file mappati alla memoria.
Questo parametro può essere null.
- inheritability
- HandleInheritability
Uno dei valori di enumerazione che specifica se un handle per il file mappato alla memoria può essere ereditato da un processo figlio. Il valore predefinito è None.
Valori restituiti
File mappato alla memoria con le caratteristiche specificate.
- Attributi
Eccezioni
mapName è una stringa vuota.
oppure
access è impostato su write-only con il valore di Write enumerazione .
capacity è minore o uguale a zero.
oppure
access non è un valore di enumerazione valido MemoryMappedFileAccess .
oppure
inheritability non è un valore di enumerazione valido HandleInheritability .
Commenti
Usare questo metodo per creare un file mappato alla memoria che non è persistente( ovvero non associato a un file su disco), che è possibile usare per condividere i dati tra processi.