MemoryMappedFile.CreateNew Yöntem

Tanım

Sistem belleğinde belleğe eşlenmiş bir dosya oluşturur.

Aşırı Yüklemeler

Name Description
CreateNew(String, Int64)

Sistem belleğinde belirtilen kapasiteye sahip, belleğe eşlenmiş bir dosya oluşturur.

CreateNew(String, Int64, MemoryMappedFileAccess)

Sistem belleğinde belirtilen kapasiteye ve erişim türüne sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Belirtilen ada, kapasiteye, erişim türüne, bellek ayırma seçeneklerine ve devralınabilirliğe sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Belirtilen kapasiteye, erişim türüne, bellek ayırmaya, güvenlik izinlerine ve sistem belleğinde devralınabilirliğe sahip, belleğe eşlenmiş bir dosya oluşturur.

CreateNew(String, Int64)

Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs

Sistem belleğinde belirtilen kapasiteye sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Parametreler

mapName
String

Bellekle eşlenen dosyaya atanacak veya null işlemler arasında paylaşmayı amaçlamadığınız bir MemoryMappedFile ad.

capacity
Int64

Bellekle eşlenen dosyaya ayrılacak bayt cinsinden en büyük boyut.

Döndürülenler

Belirtilen ada ve kapasiteye sahip, belleğe eşlenmiş bir dosya.

Özel durumlar

mapName boş bir dizedir.

capacity sıfırdan küçük veya sıfıra eşit.

Yalnızca .NET Core ve .NET 5+ : Adlandırılmış bellek eşlenmiş dosyası (null olmayan bir CreateNew) ile mapName yöntemine yapılan çağrılar yalnızca Windows işletim sistemlerinde desteklenir.

Örnekler

Aşağıdaki örnek, bellekle eşlenen bir dosyaya değer yazan Boolean üç ayrı işlemden (konsol uygulamaları) oluşur. Aşağıdaki eylem dizisi gerçekleşir:

  1. İşlem A, belleğe eşlenen dosyayı oluşturur ve dosyaya bir değer yazar.
  2. B işlemi bellekle eşlenen dosyayı açar ve dosyaya bir değer yazar.
  3. C işlemi bellekle eşlenen dosyayı açar ve dosyaya bir değer yazar.
  4. İşlem A, bellekle eşlenen dosyadaki değerleri okur ve görüntüler.
  5. A İşlemi bellekle eşlenen dosyayla tamamlandıktan sonra, dosya çöp toplama tarafından hemen geri kazanılır.

Bu örneği çalıştırmak için aşağıdakileri yapın:

  1. Uygulamaları derleyin ve üç Komut penceresi açın.
  2. İlk Komut penceresinde İşlem A'yı çalıştırın.
  3. İkinci Komut penceresinde B İşlemi'ni çalıştırın.
  4. İşlem A'ya dönün ve ENTER tuşuna basın.
  5. Üçüncü Komut penceresinde İşlem C'yi çalıştırın.
  6. İşlem A'ya dönün ve ENTER tuşuna basın.

İşlem A'nın çıkışı aşağıdaki gibidir:

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

İşlem 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

İşlem 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

İşlem 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

Açıklamalar

İşlemler arasında veri paylaşmak için kullanabileceğiniz kalıcı olmayan (disk üzerindeki bir dosyayla ilişkilendirilmemiş) bellekle eşlenmiş bir dosya oluşturmak için bu yöntemi kullanın.

Ayrıca bkz.

Şunlara uygulanır

CreateNew(String, Int64, MemoryMappedFileAccess)

Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs

Sistem belleğinde belirtilen kapasiteye ve erişim türüne sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Parametreler

mapName
String

Bellekle eşlenen dosyaya atanacak veya null işlemler arasında paylaşmayı amaçlamadığınız bir MemoryMappedFile ad.

capacity
Int64

Bellekle eşlenen dosyaya ayrılacak bayt cinsinden en büyük boyut.

access
MemoryMappedFileAccess

Bellekle eşlenen dosyaya izin verilen erişim türünü belirten numaralandırma değerlerinden biri. Varsayılan değer: ReadWrite.

Döndürülenler

Belirtilen özelliklere sahip belleğe eşlenmiş bir dosya.

Özel durumlar

mapName boş bir dizedir.

-veya-

access sabit listesi değeriyle Write salt yazma olarak ayarlanır.

capacity sıfırdan küçük veya sıfıra eşit.

-veya-

access geçerli MemoryMappedFileAccess bir numaralandırma değeri değildir.

Yalnızca .NET Core ve .NET 5+ : Adlandırılmış bellek eşlenmiş dosyası (null olmayan bir CreateNew) ile mapName yöntemine yapılan çağrılar yalnızca Windows işletim sistemlerinde desteklenir.

Açıklamalar

İşlemler arasında veri paylaşmak için kullanabileceğiniz kalıcı olmayan (disk üzerindeki bir dosyayla ilişkilendirilmemiş) bellekle eşlenmiş bir dosya oluşturmak için bu yöntemi kullanın.

Ayrıca bkz.

Şunlara uygulanır

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

Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs
Kaynak:
MemoryMappedFile.cs

Belirtilen ada, kapasiteye, erişim türüne, bellek ayırma seçeneklerine ve devralınabilirliğe sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Parametreler

mapName
String

Bellekle eşlenen dosyaya atanacak veya null işlemler arasında paylaşmayı amaçlamadığınız bir MemoryMappedFile ad.

capacity
Int64

Bellekle eşlenen dosyaya ayrılacak bayt cinsinden en büyük boyut.

access
MemoryMappedFileAccess

Bellekle eşlenen dosyaya izin verilen erişim türünü belirten numaralandırma değerlerinden biri. Varsayılan değer: ReadWrite.

options
MemoryMappedFileOptions

Bellekle eşlenen dosya için bellek ayırma seçeneklerini belirten sabit listesi değerlerinin bit düzeyinde birleşimi.

inheritability
HandleInheritability

Bellek eşlemeli dosya tanıtıcısının bir alt işlem tarafından devralınıp devralınamayacağını belirten bir değer. Varsayılan değer: None.

Döndürülenler

Belirtilen özelliklere sahip belleğe eşlenmiş bir dosya.

Özel durumlar

mapName boş bir dizedir.

-veya-

access sabit listesi değeriyle Write salt yazma olarak ayarlanır.

capacity sıfırdan küçük veya sıfıra eşit.

-veya-

access geçerli MemoryMappedFileAccess bir numaralandırma değeri değildir.

-veya-

inheritability geçerli HandleInheritability bir değer değil.

Yalnızca .NET Core ve .NET 5+ : Adlandırılmış bellek eşlenmiş dosyası (null olmayan bir CreateNew) ile mapName yöntemine yapılan çağrılar yalnızca Windows işletim sistemlerinde desteklenir.

Şunlara uygulanır

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

Belirtilen kapasiteye, erişim türüne, bellek ayırmaya, güvenlik izinlerine ve sistem belleğinde devralınabilirliğe sahip, belleğe eşlenmiş bir dosya oluşturur.

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

Parametreler

mapName
String

Bellekle eşlenen dosyaya atanacak veya null işlemler arasında paylaşmayı amaçlamadığınız bir MemoryMappedFile ad.

capacity
Int64

Bellekle eşlenen dosyaya ayrılacak bayt cinsinden en büyük boyut.

access
MemoryMappedFileAccess

Bellekle eşlenen dosyaya izin verilen erişim türünü belirten numaralandırma değerlerinden biri. Varsayılan değer: ReadWrite.

options
MemoryMappedFileOptions

Bellekle eşlenen dosya için bellek ayırma seçeneklerini belirten sabit listesi değerlerinin bit düzeyinde birleşimi.

memoryMappedFileSecurity
MemoryMappedFileSecurity

Bellekle eşlenen dosyalarda dosya erişimi ve işlemler için verilebilen izinler.

Bu parametre olabilir null.

inheritability
HandleInheritability

Bellek eşlemeli dosya tanıtıcısının bir alt işlem tarafından devralınıp devralınamayacağını belirten numaralandırma değerlerinden biri. Varsayılan değer: None.

Döndürülenler

Belirtilen özelliklere sahip belleğe eşlenmiş bir dosya.

Öznitelikler

Özel durumlar

mapName boş bir dizedir.

-veya-

access sabit listesi değeriyle Write salt yazma olarak ayarlanır.

capacity sıfırdan küçük veya sıfıra eşit.

-veya-

access geçerli MemoryMappedFileAccess bir numaralandırma değeri değildir.

-veya-

inheritability geçerli HandleInheritability bir numaralandırma değeri değildir.

Açıklamalar

İşlemler arasında veri paylaşmak için kullanabileceğiniz kalıcı olmayan (disk üzerindeki bir dosyayla ilişkilendirilmemiş) bellekle eşlenmiş bir dosya oluşturmak için bu yöntemi kullanın.

Ayrıca bkz.

Şunlara uygulanır