MemoryMappedFile.CreateNew Methode

Definitie

Hiermee maakt u een geheugentoewijzingsbestand in het systeemgeheugen.

Overloads

Name Description
CreateNew(String, Int64)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit in het systeemgeheugen.

CreateNew(String, Int64, MemoryMappedFileAccess)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit en het toegangstype in het systeemgeheugen.

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, opties voor geheugentoewijzing en overdraagbaarheid.

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit, toegangstype, geheugentoewijzing, beveiligingsmachtigingen en overnamemogelijkheden in het systeemgeheugen.

CreateNew(String, Int64)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit in het systeemgeheugen.

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

Parameters

mapName
String

Een naam die moet worden toegewezen aan het geheugentoewijzingsbestand of null voor een MemoryMappedFile bestand dat u niet wilt delen tussen processen.

capacity
Int64

De maximale grootte, in bytes, om toe te wijzen aan het geheugentoewijzingsbestand.

Retouren

Een geheugentoewijzingsbestand met de opgegeven naam en capaciteit.

Uitzonderingen

mapName is een lege tekenreeks.

capacity is kleiner dan of gelijk aan nul.

.NET Core en alleen .NET 5+: aanroepen naar de methode CreateNew met een benoemd geheugentoewijzingsbestand (dat wil gezegd, een niet-null-mapName) worden alleen ondersteund op Windows besturingssystemen.

Voorbeelden

Het volgende voorbeeld bestaat uit drie afzonderlijke processen (consoletoepassingen) die waarden schrijven Boolean naar een bestand dat is toegewezen aan het geheugen. De volgende reeks acties vindt plaats:

  1. Proces A maakt het geheugentoewijzingsbestand en schrijft er een waarde naartoe.
  2. Proces B opent het geheugentoewijzingsbestand en schrijft er een waarde naartoe.
  3. Proces C opent het geheugentoewijzingsbestand en schrijft er een waarde naartoe.
  4. Proces A leest en geeft de waarden van het geheugentoewijzingsbestand weer.
  5. Nadat proces A is voltooid met het geheugentoewijzingsbestand, wordt het bestand onmiddellijk vrijgemaakt door garbagecollection.

Ga als volgt te werk om dit voorbeeld uit te voeren:

  1. Compileer de toepassingen en open drie opdrachtvensters.
  2. Voer in het eerste opdrachtvenster Proces A uit.
  3. Voer proces B uit in het tweede opdrachtvenster.
  4. Ga terug naar Proces A en druk op Enter.
  5. Voer in het derde opdrachtvenster Proces C uit.
  6. Ga terug naar Proces A en druk op Enter.

De uitvoer van proces A is als volgt:

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

Proces 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

Opmerkingen

Gebruik deze methode om een geheugentoewijzingsbestand te maken dat niet persistent is (dat wil gezegd, niet gekoppeld aan een bestand op schijf), dat u kunt gebruiken om gegevens tussen processen te delen.

Zie ook

Van toepassing op

CreateNew(String, Int64, MemoryMappedFileAccess)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit en het toegangstype in het systeemgeheugen.

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

Parameters

mapName
String

Een naam die moet worden toegewezen aan het geheugentoewijzingsbestand of null voor een MemoryMappedFile bestand dat u niet wilt delen tussen processen.

capacity
Int64

De maximale grootte, in bytes, om toe te wijzen aan het geheugentoewijzingsbestand.

access
MemoryMappedFileAccess

Een van de opsommingswaarden die het type toegang aangeeft dat is toegestaan voor het geheugentoewijzingsbestand. De standaardwaarde is ReadWrite.

Retouren

Een geheugentoewijzingsbestand met de opgegeven kenmerken.

Uitzonderingen

mapName is een lege tekenreeks.

– of –

access is ingesteld op alleen-schrijven met de Write opsommingswaarde.

capacity is kleiner dan of gelijk aan nul.

– of –

access is geen geldige MemoryMappedFileAccess opsommingswaarde.

.NET Core en alleen .NET 5+: aanroepen naar de methode CreateNew met een benoemd geheugentoewijzingsbestand (dat wil gezegd, een niet-null-mapName) worden alleen ondersteund op Windows besturingssystemen.

Opmerkingen

Gebruik deze methode om een geheugentoewijzingsbestand te maken dat niet persistent is (dat wil gezegd, niet gekoppeld aan een bestand op schijf), dat u kunt gebruiken om gegevens tussen processen te delen.

Zie ook

Van toepassing op

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, opties voor geheugentoewijzing en overdraagbaarheid.

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

Parameters

mapName
String

Een naam die moet worden toegewezen aan het geheugentoewijzingsbestand of null voor een MemoryMappedFile bestand dat u niet wilt delen tussen processen.

capacity
Int64

De maximale grootte, in bytes, om toe te wijzen aan het geheugentoewijzingsbestand.

access
MemoryMappedFileAccess

Een van de opsommingswaarden die het type toegang aangeeft dat is toegestaan voor het geheugentoewijzingsbestand. De standaardwaarde is ReadWrite.

options
MemoryMappedFileOptions

Een bitsgewijze combinatie van opsommingswaarden die geheugentoewijzingsopties voor het geheugentoewijzingsbestand specificeert.

inheritability
HandleInheritability

Een waarde die aangeeft of een ingang naar het geheugentoewijzingsbestand kan worden overgenomen door een onderliggend proces. De standaardwaarde is None.

Retouren

Een geheugentoewijzingsbestand met de opgegeven kenmerken.

Uitzonderingen

mapName is een lege tekenreeks.

– of –

access is ingesteld op alleen-schrijven met de Write opsommingswaarde.

capacity is kleiner dan of gelijk aan nul.

– of –

access is geen geldige MemoryMappedFileAccess opsommingswaarde.

– of –

inheritability is geen geldige HandleInheritability waarde.

.NET Core en alleen .NET 5+: aanroepen naar de methode CreateNew met een benoemd geheugentoewijzingsbestand (dat wil gezegd, een niet-null-mapName) worden alleen ondersteund op Windows besturingssystemen.

Van toepassing op

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit, toegangstype, geheugentoewijzing, beveiligingsmachtigingen en overnamemogelijkheden in het systeemgeheugen.

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

Parameters

mapName
String

Een naam die moet worden toegewezen aan het geheugentoewijzingsbestand of null voor een MemoryMappedFile bestand dat u niet wilt delen tussen processen.

capacity
Int64

De maximale grootte, in bytes, om toe te wijzen aan het geheugentoewijzingsbestand.

access
MemoryMappedFileAccess

Een van de opsommingswaarden die het type toegang aangeeft dat is toegestaan voor het geheugentoewijzingsbestand. De standaardwaarde is ReadWrite.

options
MemoryMappedFileOptions

Een bitsgewijze combinatie van opsommingswaarden die geheugentoewijzingsopties voor het geheugentoewijzingsbestand specificeert.

memoryMappedFileSecurity
MemoryMappedFileSecurity

De machtigingen die kunnen worden verleend voor bestandstoegang en bewerkingen voor geheugentoewijzingen.

Deze parameter kan zijn null.

inheritability
HandleInheritability

Een van de opsommingswaarden die aangeeft of een ingang naar het geheugentoewijzingsbestand kan worden overgenomen door een onderliggend proces. De standaardwaarde is None.

Retouren

Een geheugentoewijzingsbestand met de opgegeven kenmerken.

Kenmerken

Uitzonderingen

mapName is een lege tekenreeks.

– of –

access is ingesteld op alleen-schrijven met de Write opsommingswaarde.

capacity is kleiner dan of gelijk aan nul.

– of –

access is geen geldige MemoryMappedFileAccess opsommingswaarde.

– of –

inheritability is geen geldige HandleInheritability opsommingswaarde.

Opmerkingen

Gebruik deze methode om een geheugentoewijzingsbestand te maken dat niet persistent is (dat wil gezegd, niet gekoppeld aan een bestand op schijf), dat u kunt gebruiken om gegevens tussen processen te delen.

Zie ook

Van toepassing op