MemoryMappedFile.CreateNew Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt eine Speicherabbilddatei im Systemspeicher.
Überlädt
CreateNew(String, Int64) |
Erstellt eine im Speicher abgebildete Datei mit der angegebenen Kapazität im Systemspeicher. |
CreateNew(String, Int64, MemoryMappedFileAccess) |
Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität und Zugriffstyp im Systemspeicher. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität, Zugriffstyp, Speicherbelegung und Vererbbarkeit. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität, Zugriffstyp, Speicherbelegung, Sicherheitsberechtigungen und Vererbbarkeit im Systemspeicher. |
CreateNew(String, Int64)
- Quelle:
- MemoryMappedFile.cs
- Quelle:
- MemoryMappedFile.cs
- Quelle:
- MemoryMappedFile.cs
Erstellt eine im Speicher abgebildete Datei mit der angegebenen Kapazität im Systemspeicher.
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
Parameter
- mapName
- String
Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null
für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.
- capacity
- Int64
Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.
Gibt zurück
Eine im Speicher abgebildete Datei mit den angegebenen Werten für Name und Kapazität.
Ausnahmen
mapName
ist eine leere Zeichenfolge.
capacity
ist kleiner oder gleich 0 (null).
Nur .NET Core und .NET 5 und höher: Aufrufe der CreateNew
-Methode mit einer benannten Speicherzuordnungsdatei (d. h. nicht NULL mapName
) werden nur unter Windows-Betriebssystemen unterstützt.
Beispiele
Das folgende Beispiel besteht aus drei separate Prozesse (konsolenanwendungen) auf, die schreiben Boolean
Werte für eine Speicherabbilddatei. Die folgende Sequenz von Aktionen wird ausgeführt:
Prozess A erstellt die im Arbeitsspeicher zugeordnete Datei und schreibt einen Wert in sie.
Prozess B öffnet die im Arbeitsspeicher zugeordnete Datei und schreibt einen Wert in die Datei.
Prozess C öffnet die im Speicher zugeordnete Datei und schreibt einen Wert in sie.
Process A liest und zeigt die Werte aus der speicherabbildeten Datei an.
Nachdem Prozess A mit der Speicherzuordnungsdatei abgeschlossen wurde, wird die Datei sofort von der Garbage Collection wieder freigegeben.
Gehen Sie folgendermaßen vor, um dieses Beispiel auszuführen:
Kompilieren Sie die Anwendungen, und öffnen Sie drei Befehlsfenster.
Führen Sie im ersten Befehlsfenster Prozess A aus.
Führen Sie im zweiten Befehlsfenster Prozess B aus.
Kehren Sie zu Prozess A zurück, und drücken Sie die EINGABETASTE.
Führen Sie im dritten Befehlsfenster Prozess C aus.
Kehren Sie zu Prozess A zurück, und drücken Sie die EINGABETASTE.
Die Ausgabe von Prozess A lautet wie folgt:
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
Prozess 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
Prozess 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
Prozess 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
Hinweise
Verwenden Sie diese Methode, um eine im Speicher zugeordnete Datei zu erstellen, die nicht beibehalten wird (d. h. nicht einer Datei auf dem Datenträger zugeordnet ist), die Sie zum Freigeben von Daten zwischen Prozessen verwenden können.
Weitere Informationen
Gilt für:
CreateNew(String, Int64, MemoryMappedFileAccess)
- Quelle:
- MemoryMappedFile.cs
- Quelle:
- MemoryMappedFile.cs
- Quelle:
- MemoryMappedFile.cs
Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität und Zugriffstyp im Systemspeicher.
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
Parameter
- mapName
- String
Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null
für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.
- capacity
- Int64
Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.
- access
- MemoryMappedFileAccess
Einer der Enumerationswerte, der den zulässigen Zugriffstyp für die Speicherabbilddatei angibt. Der Standardwert ist ReadWrite.
Gibt zurück
Eine Speicherabbilddatei, die die angegebenen Merkmale aufweist.
Ausnahmen
mapName
ist eine leere Zeichenfolge.
- oder -
access
ist mit dem Write-Enumerationswert auf „Nur Schreibzugriff“ festgelegt.
capacity
ist kleiner oder gleich 0 (null).
- oder -
access
ist kein gültiger MemoryMappedFileAccess-Enumerationswert.
Nur .NET Core und .NET 5 und höher: Aufrufe der CreateNew
-Methode mit einer benannten Speicherzuordnungsdatei (d. h. nicht NULL mapName
) werden nur unter Windows-Betriebssystemen unterstützt.
Hinweise
Verwenden Sie diese Methode, um eine im Speicher zugeordnete Datei zu erstellen, die nicht beibehalten wird (d. h. nicht einer Datei auf dem Datenträger zugeordnet ist), die Sie zum Freigeben von Daten zwischen Prozessen verwenden können.
Weitere Informationen
Gilt für:
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
- Quelle:
- MemoryMappedFile.cs
- Quelle:
- MemoryMappedFile.cs
- Quelle:
- MemoryMappedFile.cs
Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität, Zugriffstyp, Speicherbelegung und Vererbbarkeit.
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
Parameter
- mapName
- String
Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null
für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.
- capacity
- Int64
Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.
- access
- MemoryMappedFileAccess
Einer der Enumerationswerte, der den zulässigen Zugriffstyp für die Speicherabbilddatei angibt. Der Standardwert ist ReadWrite.
- options
- MemoryMappedFileOptions
Eine bitweise Kombination von Enumerationswerten, die Speicherbelegungsoptionen für die Speicherabbilddatei angeben.
- inheritability
- HandleInheritability
Ein Wert, der angibt, ob ein Handle auf die Speicherabbilddatei von einem untergeordneten Prozess geerbt werden kann. Der Standardwert ist None.
Gibt zurück
Eine Speicherabbilddatei, die die angegebenen Merkmale aufweist.
Ausnahmen
mapName
ist eine leere Zeichenfolge.
- oder -
access
ist mit dem Write-Enumerationswert auf „Nur Schreibzugriff“ festgelegt.
capacity
ist kleiner oder gleich 0 (null).
- oder -
access
ist kein gültiger MemoryMappedFileAccess-Enumerationswert.
- oder -
inheritability
ist kein gültiger HandleInheritability -Wert.
Nur .NET Core und .NET 5 und höher: Aufrufe der CreateNew
-Methode mit einer benannten Speicherzuordnungsdatei (d. h. nicht NULL mapName
) werden nur unter Windows-Betriebssystemen unterstützt.
Gilt für:
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität, Zugriffstyp, Speicherbelegung, Sicherheitsberechtigungen und Vererbbarkeit im Systemspeicher.
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
Parameter
- mapName
- String
Ein Name, der der im Speicher abgebildeten Datei zugewiesen werden soll, oder null
für eine MemoryMappedFile, die Sie nicht für mehrere Vorgänge freigeben möchten.
- capacity
- Int64
Die maximale Größe (in Bytes), die für die Speicherabbilddatei reserviert werden soll.
- access
- MemoryMappedFileAccess
Einer der Enumerationswerte, der den zulässigen Zugriffstyp für die Speicherabbilddatei angibt. Der Standardwert ist ReadWrite.
- options
- MemoryMappedFileOptions
Eine bitweise Kombination von Enumerationswerten, die Speicherbelegungsoptionen für die Speicherabbilddatei angeben.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
Die Berechtigungen, die für den Dateizugriff und für Vorgänge für Speicherabbilddateien gewährt werden können.
Dieser Parameter kann null
sein.
- inheritability
- HandleInheritability
Einer der Enumerationswerte, der angibt, ob ein Handle auf die Speicherabbilddatei von einem untergeordneten Prozess geerbt werden kann. Der Standardwert ist None.
Gibt zurück
Eine Speicherabbilddatei, die die angegebenen Merkmale aufweist.
- Attribute
Ausnahmen
mapName
ist eine leere Zeichenfolge.
- oder -
access
ist mit dem Write-Enumerationswert auf „Nur Schreibzugriff“ festgelegt.
capacity
ist kleiner oder gleich 0 (null).
- oder -
access
ist kein gültiger MemoryMappedFileAccess-Enumerationswert.
- oder -
inheritability
ist kein gültiger HandleInheritability-Enumerationswert.
Hinweise
Verwenden Sie diese Methode, um eine im Speicher zugeordnete Datei zu erstellen, die nicht beibehalten wird (d. h. nicht einer Datei auf dem Datenträger zugeordnet ist), die Sie zum Freigeben von Daten zwischen Prozessen verwenden können.