MemoryMappedFile.CreateNew Metoda

Definice

Vytvoří soubor mapovaný do paměti v systémové paměti.

Přetížení

Name Description
CreateNew(String, Int64)

Vytvoří soubor mapovaný do paměti, který má zadanou kapacitu v systémové paměti.

CreateNew(String, Int64, MemoryMappedFileAccess)

Vytvoří soubor mapovaný v paměti, který má zadanou kapacitu a typ přístupu v systémové paměti.

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

Vytvoří soubor mapovaný do 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ý do paměti se zadanou kapacitou, typem přístupu, přidělením paměti, oprávněními zabezpečení a dědičností v systémové paměti.

CreateNew(String, Int64)

Zdroj:
MemoryMappedFile.cs
Zdroj:
MemoryMappedFile.cs
Zdroj:
MemoryMappedFile.cs
Zdroj:
MemoryMappedFile.cs
Zdroj:
MemoryMappedFile.cs

Vytvoří soubor mapovaný do 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ý chcete přiřadit k souboru mapovanému paměti nebo null k souboru MemoryMappedFile , který nemáte v úmyslu sdílet napříč procesy.

capacity
Int64

Maximální velikost v bajtech, která se má přidělit souboru mapovanému paměti.

Návraty

Soubor mapovaný do paměti, 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í metody CreateNew s pojmenovaným souborem mapovaným pamětí (tj. nenulovou mapName) jsou podporována pouze v Windows operačních systémech.

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ého paměti. Dochází k následující sekvenci akcí:

  1. Proces A vytvoří soubor mapovaný do paměti a zapíše do něj hodnotu.
  2. Proces B otevře soubor mapovaný v paměti a zapíše do něj hodnotu.
  3. Proces C otevře soubor mapovaný v paměti a zapíše do něj hodnotu.
  4. Proces A přečte a zobrazí hodnoty ze souboru mapovaného paměti.
  5. Po dokončení procesu A se souborem mapovaným do paměti se okamžitě uvolní uvolňováním paměti.

Pokud chcete tento příklad spustit, postupujte takto:

  1. Zkompilujte aplikace a otevřete tři okna příkazů.
  2. V prvním příkazovém okně spusťte proces A.
  3. V druhém příkazovém okně spusťte proces B.
  4. Vraťte se do procesu A a stiskněte ENTER.
  5. V třetím příkazovém okně spusťte proces C.
  6. Vraťte se do procesu 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

Zpracování 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

Tuto metodu použijte k vytvoření souboru mapovaného 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
Zdroj:
MemoryMappedFile.cs
Zdroj:
MemoryMappedFile.cs

Vytvoří soubor mapovaný v paměti, který má zadanou kapacitu a typ přístupu v systémové paměti.

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ý chcete přiřadit k souboru mapovanému paměti nebo null k souboru MemoryMappedFile , který nemáte v úmyslu sdílet napříč procesy.

capacity
Int64

Maximální velikost v bajtech, která se má přidělit souboru mapovanému paměti.

access
MemoryMappedFileAccess

Jedna z hodnot výčtu, která určuje typ přístupu povolený pro soubor mapovaný v paměti. Výchozí hodnota je ReadWrite.

Návraty

Soubor mapovaný do paměti, který má zadané charakteristiky.

Výjimky

mapName je prázdný řetězec.

nebo

access je nastavena na hodnotu zápisu pouze 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í metody CreateNew s pojmenovaným souborem mapovaným pamětí (tj. nenulovou mapName) jsou podporována pouze v Windows operačních systémech.

Poznámky

Tuto metodu použijte k vytvoření souboru mapovaného 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
Zdroj:
MemoryMappedFile.cs
Zdroj:
MemoryMappedFile.cs

Vytvoří soubor mapovaný do 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ý chcete přiřadit k souboru mapovanému paměti nebo null k souboru MemoryMappedFile , který nemáte v úmyslu sdílet napříč procesy.

capacity
Int64

Maximální velikost v bajtech, která se má přidělit souboru mapovanému paměti.

access
MemoryMappedFileAccess

Jedna z hodnot výčtu, která určuje typ přístupu povolený pro soubor mapovaný v paměti. Výchozí hodnota je ReadWrite.

options
MemoryMappedFileOptions

Bitová kombinace hodnot výčtu, která určuje možnosti přidělení paměti pro soubor mapovaný pamětí.

inheritability
HandleInheritability

Hodnota, která určuje, zda popisovač souboru mapovaného paměti může být zděděna podřízeným procesem. Výchozí hodnota je None.

Návraty

Soubor mapovaný do paměti, který má zadané charakteristiky.

Výjimky

mapName je prázdný řetězec.

nebo

access je nastavena na hodnotu zápisu pouze 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í metody CreateNew s pojmenovaným souborem mapovaným pamětí (tj. nenulovou mapName) jsou podporována pouze v Windows operačních systémech.

Platí pro

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

Vytvoří soubor mapovaný do paměti se zadanou kapacitou, typem přístupu, přidělením paměti, oprávněními 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ý chcete přiřadit k souboru mapovanému paměti nebo null k souboru MemoryMappedFile , který nemáte v úmyslu sdílet napříč procesy.

capacity
Int64

Maximální velikost v bajtech, která se má přidělit souboru mapovanému paměti.

access
MemoryMappedFileAccess

Jedna z hodnot výčtu, která určuje typ přístupu povolený pro soubor mapovaný v paměti. Výchozí hodnota je ReadWrite.

options
MemoryMappedFileOptions

Bitová kombinace hodnot výčtu, která určuje možnosti přidělení paměti pro soubor mapovaný pamětí.

memoryMappedFileSecurity
MemoryMappedFileSecurity

Oprávnění, která lze udělit pro přístup k souborům a operace s soubory mapovanými v paměti.

Tento parametr může být null.

inheritability
HandleInheritability

Jedna z hodnot výčtu, která určuje, zda popisovač souboru mapovaného paměti může být zděděna podřízeným procesem. Výchozí hodnota je None.

Návraty

Soubor mapovaný do paměti, který má zadané charakteristiky.

Atributy

Výjimky

mapName je prázdný řetězec.

nebo

access je nastavena na hodnotu zápisu pouze 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

Tuto metodu použijte k vytvoření souboru mapovaného 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