MemoryMappedFile.CreateNew Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvoří soubor mapovaný paměti v systémové paměti.
Přetížení
CreateNew(String, Int64) |
Vytvoří soubor mapované paměti, který má zadanou kapacitu v systémové paměti. |
CreateNew(String, Int64, MemoryMappedFileAccess) |
Vytvoří soubor mapované paměti, který má v systémové paměti zadanou kapacitu a typ přístupu. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Vytvoří soubor mapované paměti se zadaným názvem, kapacitou, typem přístupu, možnostmi přidělení paměti a dědičností. |
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Vytvoří soubor mapované paměti, který má zadanou kapacitu, typ přístupu, přidělení paměti, oprávnění zabezpečení a dědičnost v systémové paměti. |
CreateNew(String, Int64)
- Zdroj:
- MemoryMappedFile.cs
- Zdroj:
- MemoryMappedFile.cs
- Zdroj:
- MemoryMappedFile.cs
Vytvoří soubor mapované paměti, který má zadanou kapacitu v systémové paměti.
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
Parametry
- mapName
- String
Název, který se má přiřadit k souboru mapované paměti nebo null
k MemoryMappedFile souboru, který nechcete sdílet mezi procesy.
- capacity
- Int64
Maximální velikost v bajtech, která se má přidělit souboru mapované paměti.
Návraty
Soubor mapovaný na paměť, který má zadaný název a kapacitu.
Výjimky
mapName
je prázdný řetězec.
capacity
je menší než nebo rovno nule.
Pouze .NET Core a .NET 5+: Volání CreateNew
metody s pojmenovaným souborem mapování paměti (tj. bez hodnoty null mapName
) jsou podporována pouze v operačních systémech Windows.
Příklady
Následující příklad se skládá ze tří samostatných procesů (konzolových aplikací), které zapisují Boolean
hodnoty do souboru mapované paměti. Dojde k následujícímu pořadí akcí:
Proces A vytvoří soubor mapované paměti a zapíše do něj hodnotu.
Proces B otevře soubor mapovaný na paměť a zapíše do něj hodnotu.
Proces C otevře soubor mapovaný na paměť a zapíše do něj hodnotu.
Proces A přečte a zobrazí hodnoty ze souboru mapovaného na paměť.
Po dokončení procesu A se souborem mapované paměti je soubor okamžitě uvolněn uvolňováním paměti.
Pokud chcete spustit tento příklad, postupujte takto:
Zkompilujte aplikace a otevřete tři příkazová okna.
V prvním příkazovém okně spusťte Proces A.
V druhém příkazovém okně spusťte proces B.
Vraťte se do části Proces A a stiskněte enter.
Ve třetím příkazovém okně spusťte Proces C.
Vraťte se do části Proces A a stiskněte enter.
Výstup procesu A je následující:
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
Zpracovat 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
Proces 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
Proces 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
Poznámky
Tato metoda slouží k vytvoření souboru mapované paměti, který není trvalý (to znamená, že není přidružen k souboru na disku), který můžete použít ke sdílení dat mezi procesy.
Viz také
Platí pro
CreateNew(String, Int64, MemoryMappedFileAccess)
- Zdroj:
- MemoryMappedFile.cs
- Zdroj:
- MemoryMappedFile.cs
- Zdroj:
- MemoryMappedFile.cs
Vytvoří soubor mapované paměti, který má v systémové paměti zadanou kapacitu a typ přístupu.
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
Parametry
- mapName
- String
Název, který se má přiřadit k souboru mapované paměti nebo null
k MemoryMappedFile souboru, který nechcete sdílet mezi procesy.
- capacity
- Int64
Maximální velikost v bajtech, která se má přidělit souboru mapované paměti.
- access
- MemoryMappedFileAccess
Jedna z hodnot výčtu, která určuje typ přístupu povoleného k souboru mapované paměti. Výchozí formát je ReadWrite.
Návraty
Soubor mapovaný na paměť, který má zadané vlastnosti.
Výjimky
mapName
je prázdný řetězec.
-nebo-
access
je nastavená na hodnotu jen pro zápis s hodnotou výčtu Write .
capacity
je menší než nebo rovno nule.
-nebo-
access
není platná MemoryMappedFileAccess hodnota výčtu.
Pouze .NET Core a .NET 5+: Volání CreateNew
metody s pojmenovaným souborem mapování paměti (tj. bez hodnoty null mapName
) jsou podporována pouze v operačních systémech Windows.
Poznámky
Tato metoda slouží k vytvoření souboru mapované paměti, který není trvalý (to znamená, že není přidružen k souboru na disku), který můžete použít ke sdílení dat mezi procesy.
Viz také
Platí pro
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)
- Zdroj:
- MemoryMappedFile.cs
- Zdroj:
- MemoryMappedFile.cs
- Zdroj:
- MemoryMappedFile.cs
Vytvoří soubor mapované paměti se zadaným názvem, kapacitou, typem přístupu, možnostmi přidělení paměti a dědičností.
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
Parametry
- mapName
- String
Název, který se má přiřadit k souboru mapované paměti nebo null
k MemoryMappedFile souboru, který nechcete sdílet mezi procesy.
- capacity
- Int64
Maximální velikost v bajtech, která se má přidělit souboru mapované paměti.
- access
- MemoryMappedFileAccess
Jedna z hodnot výčtu, která určuje typ přístupu povoleného k souboru mapované paměti. Výchozí formát je ReadWrite.
- options
- MemoryMappedFileOptions
Bitové kombinace hodnot výčtu, která určuje možnosti přidělení paměti pro soubor mapovaný na paměť.
- inheritability
- HandleInheritability
Hodnota, která určuje, zda popisovač souboru mapovaného na paměť může být zděděna podřízeným procesem. Výchozí formát je None.
Návraty
Soubor mapovaný na paměť, který má zadané vlastnosti.
Výjimky
mapName
je prázdný řetězec.
-nebo-
access
je nastavená na hodnotu jen pro zápis s hodnotou výčtu Write .
capacity
je menší než nebo rovno nule.
-nebo-
access
není platná MemoryMappedFileAccess hodnota výčtu.
-nebo-
inheritability
není platná HandleInheritability hodnota.
Pouze .NET Core a .NET 5+: Volání CreateNew
metody s pojmenovaným souborem mapování paměti (tj. bez hodnoty null mapName
) jsou podporována pouze v operačních systémech Windows.
Platí pro
CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)
Vytvoří soubor mapované paměti, který má zadanou kapacitu, typ přístupu, přidělení paměti, oprávnění zabezpečení a dědičnost v systémové paměti.
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
Parametry
- mapName
- String
Název, který se má přiřadit k souboru mapované paměti nebo null
k MemoryMappedFile souboru, který nechcete sdílet mezi procesy.
- capacity
- Int64
Maximální velikost v bajtech, která se má přidělit souboru mapované paměti.
- access
- MemoryMappedFileAccess
Jedna z hodnot výčtu, která určuje typ přístupu povoleného k souboru mapované paměti. Výchozí formát je ReadWrite.
- options
- MemoryMappedFileOptions
Bitové kombinace hodnot výčtu, která určuje možnosti přidělení paměti pro soubor mapovaný na paměť.
- memoryMappedFileSecurity
- MemoryMappedFileSecurity
Oprávnění, která lze udělit pro přístup k souborům a operace se soubory mapovanými pamětí.
Tento parametr může být null
.
- inheritability
- HandleInheritability
Jedna z hodnot výčtu, která určuje, zda popisovač souboru mapované paměti může být zděděna podřízeným procesem. Výchozí formát je None.
Návraty
Soubor mapovaný na paměť, který má zadané vlastnosti.
- Atributy
Výjimky
mapName
je prázdný řetězec.
-nebo-
access
je nastavená na hodnotu jen pro zápis s hodnotou výčtu Write .
capacity
je menší než nebo rovno nule.
-nebo-
access
není platná MemoryMappedFileAccess hodnota výčtu.
-nebo-
inheritability
není platná HandleInheritability hodnota výčtu.
Poznámky
Tato metoda slouží k vytvoření souboru mapované paměti, který není trvalý (to znamená, že není přidružen k souboru na disku), který můžete použít ke sdílení dat mezi procesy.