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 nella memoria di sistema.
Overload
| 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 di memoria e l'ereditabilità specificati. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Crea un file mappato alla memoria con la capacità, il tipo di accesso, l'allocazione di memoria, le autorizzazioni di sicurezza e l'ereditabilità specificati nella memoria di sistema. |
CreateNew(String, Int64)
- Origine:
- MemoryMappedFile.cs
- Origine:
- MemoryMappedFile.cs
- Origine:
- MemoryMappedFile.cs
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);
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 di cui è stato eseguito il mapping alla memoria, oppure null per un elemento MemoryMappedFile che non si vuole condividere tra processi.
- capacity
- Int64
Dimensioni massime, in byte, da allocare per il file mappato alla memoria.
Restituisce
File mappato alla memoria con il nome e la capacità specificati.
Eccezioni
Il parametro mapName è una stringa vuota.
capacity è minore o uguale a zero.
Solo .NET Core e .NET 5+: le chiamate al CreateNew metodo con un file mappato alla memoria denominata (ovvero un non Null mapName) 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 vi scrive un valore.
Il processo B apre il file mappato alla memoria e vi scrive un valore.
Il processo C apre il file mappato alla memoria e vi scrive un valore.
Process 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, seguire questa procedura:
Compilare le applicazioni e aprire tre finestre di comando.
Nella prima finestra di comando eseguire Process A.
Nella seconda finestra di comando eseguire Process B.
Tornare a Elabora A e premere INVIO.
Nella terza finestra di comando eseguire Process C.
Tornare a Elabora 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
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
Commenti
Utilizzare 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)
- Origine:
- MemoryMappedFile.cs
- Origine:
- MemoryMappedFile.cs
- Origine:
- MemoryMappedFile.cs
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);
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 di cui è stato eseguito il mapping alla memoria, oppure null per un elemento MemoryMappedFile che non si vuole condividere tra processi.
- capacity
- Int64
Dimensioni massime, in byte, da allocare per il 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.
Restituisce
File mappato alla memoria con le caratteristiche specificate.
Eccezioni
Il parametro mapName è una stringa vuota.
-oppure-
access viene impostato su sola scrittura con il valore di enumerazione Write.
capacity è minore o uguale a zero.
-oppure-
access non è un valore di enumerazione MemoryMappedFileAccess valido.
Solo .NET Core e .NET 5+: le chiamate al CreateNew metodo con un file mappato alla memoria denominata (ovvero un non Null mapName) sono supportate solo nei sistemi operativi Windows.
Commenti
Utilizzare 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)
- Origine:
- MemoryMappedFile.cs
- Origine:
- MemoryMappedFile.cs
- Origine:
- MemoryMappedFile.cs
Crea un file mappato alla memoria con il nome, la capacità, il tipo di accesso, le opzioni di allocazione di memoria e l'ereditabilità 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);
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 di cui è stato eseguito il mapping alla memoria, oppure null per un elemento MemoryMappedFile che non si vuole condividere tra processi.
- capacity
- Int64
Dimensioni massime, in byte, da allocare per il 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 opzioni di allocazione della memoria per il file mappato alla memoria.
- inheritability
- HandleInheritability
Valore che specifica se un handle al file mappato alla memoria può essere ereditato da un processo figlio. Il valore predefinito è None.
Restituisce
File mappato alla memoria con le caratteristiche specificate.
Eccezioni
Il parametro mapName è una stringa vuota.
-oppure-
access viene impostato su sola scrittura con il valore di enumerazione Write.
capacity è minore o uguale a zero.
-oppure-
access non è un valore di enumerazione MemoryMappedFileAccess valido.
-oppure-
inheritability non è un valore valido di HandleInheritability.
Solo .NET Core e .NET 5+: le chiamate al CreateNew metodo con un file mappato alla memoria denominata (ovvero un non Null mapName) 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à, il tipo di accesso, l'allocazione di memoria, le autorizzazioni di sicurezza e l'ereditabilità specificati 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 di cui è stato eseguito il mapping alla memoria, oppure null per un elemento MemoryMappedFile che non si vuole condividere tra processi.
- capacity
- Int64
Dimensioni massime, in byte, da allocare per il 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 opzioni di allocazione della memoria per il file mappato alla memoria.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
Autorizzazioni che è possibile concedere 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 al file mappato alla memoria può essere ereditato da un processo figlio. Il valore predefinito è None.
Restituisce
File mappato alla memoria con le caratteristiche specificate.
- Attributi
Eccezioni
Il parametro mapName è una stringa vuota.
-oppure-
access viene impostato su sola scrittura con il valore di enumerazione Write.
capacity è minore o uguale a zero.
-oppure-
access non è un valore di enumerazione MemoryMappedFileAccess valido.
-oppure-
inheritability non è un valore di enumerazione HandleInheritability valido.
Commenti
Utilizzare 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.