MemoryMappedFile.CreateNew Méthode

Définition

Crée un fichier mappé en mémoire dans la mémoire système.

Surcharges

CreateNew(String, Int64)

Crée un fichier mappé en mémoire qui a la capacité spécifiée dans la mémoire système.

CreateNew(String, Int64, MemoryMappedFileAccess)

Crée un fichier mappé en mémoire qui a la capacité et le type d’accès spécifiés dans la mémoire système.

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

Crée un fichier mappé en mémoire qui a le nom, la capacité, le type d’accès, les options d’allocation mémoire et les règles d’héritage spécifiés.

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

Crée un fichier mappé en mémoire qui a la capacité, le type d'accès, l'allocation de mémoire, les autorisations de sécurité et les règles d'héritage spécifiés dans la mémoire système.

CreateNew(String, Int64)

Source:
MemoryMappedFile.cs
Source:
MemoryMappedFile.cs
Source:
MemoryMappedFile.cs

Crée un fichier mappé en mémoire qui a la capacité spécifiée dans la mémoire système.

C#
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string? mapName, long capacity);
C#
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity);

Paramètres

mapName
String

Nom à attribuer au fichier mappé en mémoire, ou null pour un MemoryMappedFile que vous ne souhaitez pas partager entre plusieurs processus.

capacity
Int64

Taille maximale (en octets) à allouer au fichier mappé en mémoire.

Retours

Fichier mappé en mémoire qui a le nom et la capacité spécifiés.

Exceptions

mapName est une chaîne vide.

capacity est inférieur ou égal à zéro.

.NET Core et .NET 5+ uniquement : les appels à la CreateNew méthode avec un fichier mappé en mémoire nommé (autrement dit, un fichier non null mapName) sont pris en charge uniquement sur les systèmes d’exploitation Windows.

Exemples

L’exemple suivant est composé de trois processus distincts (applications console) qui écrivent Boolean des valeurs dans un fichier mappé en mémoire. La séquence d’actions suivante se produit :

  1. Le processus A crée le fichier mappé en mémoire et y écrit une valeur.

  2. Le processus B ouvre le fichier mappé en mémoire et y écrit une valeur.

  3. Le processus C ouvre le fichier mappé en mémoire et y écrit une valeur.

  4. Le processus A lit et affiche les valeurs du fichier mappé en mémoire.

  5. Une fois le processus A terminé avec le fichier mappé en mémoire, le fichier est immédiatement récupéré par garbage collection.

Pour exécuter cet exemple, procédez comme suit :

  1. Compilez les applications et ouvrez trois fenêtres De commande.

  2. Dans la première fenêtre Commande, exécutez Le processus A.

  3. Dans la deuxième fenêtre Commande, exécutez le processus B.

  4. Revenez à Traiter A et appuyez sur ENTRÉE.

  5. Dans la troisième fenêtre Commande, exécutez Le processus C.

  6. Revenez à Traiter A et appuyez sur ENTRÉE.

La sortie du processus A est la suivante :

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

Processus A

C#
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();
        }
    }
}

Processus B

C#
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.");
        }
    }
}

Processus C

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.");
        }
    }
}

Remarques

Utilisez cette méthode pour créer un fichier mappé en mémoire qui n’est pas conservé (c’est-à-dire qui n’est pas associé à un fichier sur le disque), que vous pouvez utiliser pour partager des données entre des processus.

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

CreateNew(String, Int64, MemoryMappedFileAccess)

Source:
MemoryMappedFile.cs
Source:
MemoryMappedFile.cs
Source:
MemoryMappedFile.cs

Crée un fichier mappé en mémoire qui a la capacité et le type d’accès spécifiés dans la mémoire système.

C#
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string? mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
C#
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateNew (string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);

Paramètres

mapName
String

Nom à attribuer au fichier mappé en mémoire, ou null pour un MemoryMappedFile que vous ne souhaitez pas partager entre plusieurs processus.

capacity
Int64

Taille maximale (en octets) à allouer au fichier mappé en mémoire.

access
MemoryMappedFileAccess

L'une des valeurs d'énumération qui spécifie le type d'accès autorisé au fichier mappé en mémoire. La valeur par défaut est ReadWrite.

Retours

Fichier mappé en mémoire qui possède les caractéristiques spécifiées.

Exceptions

mapName est une chaîne vide.

- ou -

access est défini en écriture seule avec la valeur d’énumération Write.

capacity est inférieur ou égal à zéro.

- ou -

access n’est pas une valeur d’énumération MemoryMappedFileAccess valide.

.NET Core et .NET 5+ uniquement : les appels à la CreateNew méthode avec un fichier mappé en mémoire nommé (autrement dit, un fichier non null mapName) sont pris en charge uniquement sur les systèmes d’exploitation Windows.

Remarques

Utilisez cette méthode pour créer un fichier mappé en mémoire qui n’est pas conservé (c’est-à-dire qui n’est pas associé à un fichier sur le disque), que vous pouvez utiliser pour partager des données entre des processus.

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

Source:
MemoryMappedFile.cs
Source:
MemoryMappedFile.cs
Source:
MemoryMappedFile.cs

Crée un fichier mappé en mémoire qui a le nom, la capacité, le type d’accès, les options d’allocation mémoire et les règles d’héritage spécifiés.

C#
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);
C#
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);

Paramètres

mapName
String

Nom à attribuer au fichier mappé en mémoire, ou null pour un MemoryMappedFile que vous ne souhaitez pas partager entre plusieurs processus.

capacity
Int64

Taille maximale (en octets) à allouer au fichier mappé en mémoire.

access
MemoryMappedFileAccess

L'une des valeurs d'énumération qui spécifie le type d'accès autorisé au fichier mappé en mémoire. La valeur par défaut est ReadWrite.

options
MemoryMappedFileOptions

Combinaison d'opérations de bits de valeurs d'énumération qui spécifie des options d'allocation de mémoire pour le fichier mappé en mémoire.

inheritability
HandleInheritability

Valeur qui spécifie si un processus enfant peut hériter d’un handle au fichier mappé en mémoire. La valeur par défaut est None.

Retours

Fichier mappé en mémoire qui possède les caractéristiques spécifiées.

Exceptions

mapName est une chaîne vide.

- ou -

access est défini en écriture seule avec la valeur d’énumération Write.

capacity est inférieur ou égal à zéro.

- ou -

access n’est pas une valeur d’énumération MemoryMappedFileAccess valide.

- ou -

inheritability n’est pas une valeur de HandleInheritability valide.

.NET Core et .NET 5+ uniquement : les appels à la CreateNew méthode avec un fichier mappé en mémoire nommé (autrement dit, un fichier non null mapName) sont pris en charge uniquement sur les systèmes d’exploitation Windows.

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

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

Crée un fichier mappé en mémoire qui a la capacité, le type d'accès, l'allocation de mémoire, les autorisations de sécurité et les règles d'héritage spécifiés dans la mémoire système.

C#
[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);

Paramètres

mapName
String

Nom à attribuer au fichier mappé en mémoire, ou null pour un MemoryMappedFile que vous ne souhaitez pas partager entre plusieurs processus.

capacity
Int64

Taille maximale (en octets) à allouer au fichier mappé en mémoire.

access
MemoryMappedFileAccess

L'une des valeurs d'énumération qui spécifie le type d'accès autorisé au fichier mappé en mémoire. La valeur par défaut est ReadWrite.

options
MemoryMappedFileOptions

Combinaison d'opérations de bits de valeurs d'énumération qui spécifie des options d'allocation de mémoire pour le fichier mappé en mémoire.

memoryMappedFileSecurity
MemoryMappedFileSecurity

Autorisations qui peuvent être accordées pour l'accès aux fichiers et aux opérations sur les fichiers mappés en mémoire.

Ce paramètre peut être null.

inheritability
HandleInheritability

L'une des valeurs d'énumération qui spécifie si un processus enfant peut hériter d'un handle au fichier mappé en mémoire. La valeur par défaut est None.

Retours

Fichier mappé en mémoire qui possède les caractéristiques spécifiées.

Attributs

Exceptions

mapName est une chaîne vide.

- ou -

access est défini en écriture seule avec la valeur d’énumération Write.

capacity est inférieur ou égal à zéro.

- ou -

access n’est pas une valeur d’énumération MemoryMappedFileAccess valide.

- ou -

inheritability n’est pas une valeur d’énumération HandleInheritability valide.

Remarques

Utilisez cette méthode pour créer un fichier mappé en mémoire qui n’est pas conservé (c’est-à-dire qui n’est pas associé à un fichier sur le disque), que vous pouvez utiliser pour partager des données entre des processus.

Voir aussi

S’applique à

.NET Framework 4.8.1 et autres versions
Produit Versions
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1