MemoryMappedFile.CreateNew Metode

Definisi

Membuat file yang dipetakan memori dalam memori sistem.

Overload

CreateNew(String, Int64)

Membuat file yang dipetakan memori yang memiliki kapasitas yang ditentukan dalam memori sistem.

CreateNew(String, Int64, MemoryMappedFileAccess)

Membuat file yang dipetakan memori yang memiliki kapasitas dan jenis akses yang ditentukan dalam memori sistem.

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

Membuat file yang dipetakan memori yang memiliki nama, kapasitas, jenis akses, opsi alokasi memori, dan pewarisan yang ditentukan.

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

Membuat file yang dipetakan memori yang memiliki kapasitas, jenis akses, alokasi memori, izin keamanan, dan pewarisan yang ditentukan dalam memori sistem.

CreateNew(String, Int64)

Sumber:
MemoryMappedFile.cs
Sumber:
MemoryMappedFile.cs
Sumber:
MemoryMappedFile.cs

Membuat file yang dipetakan memori yang memiliki kapasitas yang ditentukan dalam memori sistem.

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

Parameter

mapName
String

Nama yang akan ditetapkan ke file yang dipetakan memori, atau null untuk MemoryMappedFile yang tidak ingin Anda bagikan di seluruh proses.

capacity
Int64

Ukuran maksimum, dalam byte, untuk dialokasikan ke file yang dipetakan memori.

Mengembalikan

File yang dipetakan memori yang memiliki nama dan kapasitas yang ditentukan.

Pengecualian

mapName adalah string kosong.

capacity kurang dari atau sama dengan nol.

Hanya .NET Core dan .NET 5+: Panggilan ke CreateNew metode dengan file yang dipetakan memori bernama (yaitu, non-null mapName) hanya didukung pada sistem operasi Windows.

Contoh

Contoh berikut terdiri dari tiga proses terpisah (aplikasi konsol) yang menulis Boolean nilai ke file yang dipetakan memori. Urutan tindakan berikut terjadi:

  1. Proses A membuat file yang dipetakan memori dan menulis nilainya.

  2. Proses B membuka file yang dipetakan memori dan menulis nilainya.

  3. Proses C membuka file yang dipetakan memori dan menulis nilainya.

  4. Proses A membaca dan menampilkan nilai dari file yang dipetakan memori.

  5. Setelah Proses A selesai dengan file yang dipetakan memori, file segera diklaim kembali oleh pengumpulan sampah.

Untuk menjalankan contoh ini, lakukan hal berikut:

  1. Kompilasi aplikasi dan buka tiga jendela Perintah.

  2. Di jendela Perintah pertama, jalankan Proses A.

  3. Di jendela Perintah kedua, jalankan Proses B.

  4. Kembali ke Proses A dan tekan ENTER.

  5. Di jendela Perintah ketiga, jalankan Proses C.

  6. Kembali ke Proses A dan tekan ENTER.

Output Dari Proses A adalah sebagai berikut:

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

Proses 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

Proses 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

Proses 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

Keterangan

Gunakan metode ini untuk membuat file yang dipetakan memori yang tidak bertahan (yaitu, tidak terkait dengan file pada disk), yang dapat Anda gunakan untuk berbagi data antar proses.

Lihat juga

Berlaku untuk

CreateNew(String, Int64, MemoryMappedFileAccess)

Sumber:
MemoryMappedFile.cs
Sumber:
MemoryMappedFile.cs
Sumber:
MemoryMappedFile.cs

Membuat file yang dipetakan memori yang memiliki kapasitas dan jenis akses yang ditentukan dalam memori sistem.

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

Parameter

mapName
String

Nama yang akan ditetapkan ke file yang dipetakan memori, atau null untuk MemoryMappedFile yang tidak ingin Anda bagikan di seluruh proses.

capacity
Int64

Ukuran maksimum, dalam byte, untuk dialokasikan ke file yang dipetakan memori.

access
MemoryMappedFileAccess

Salah satu nilai enumerasi yang menentukan jenis akses yang diizinkan ke file yang dipetakan memori. Default adalah ReadWrite.

Mengembalikan

File yang dipetakan memori yang memiliki karakteristik yang ditentukan.

Pengecualian

mapName adalah string kosong.

-atau-

access diatur ke tulis-saja dengan Write nilai enumerasi.

capacity kurang dari atau sama dengan nol.

-atau-

access bukan nilai enumerasi yang valid MemoryMappedFileAccess .

Hanya .NET Core dan .NET 5+: Panggilan ke CreateNew metode dengan file yang dipetakan memori bernama (yaitu, non-null mapName) hanya didukung pada sistem operasi Windows.

Keterangan

Gunakan metode ini untuk membuat file yang dipetakan memori yang tidak bertahan (yaitu, tidak terkait dengan file pada disk), yang dapat Anda gunakan untuk berbagi data antar proses.

Lihat juga

Berlaku untuk

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

Sumber:
MemoryMappedFile.cs
Sumber:
MemoryMappedFile.cs
Sumber:
MemoryMappedFile.cs

Membuat file yang dipetakan memori yang memiliki nama, kapasitas, jenis akses, opsi alokasi memori, dan pewarisan yang ditentukan.

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

Parameter

mapName
String

Nama yang akan ditetapkan ke file yang dipetakan memori, atau null untuk MemoryMappedFile yang tidak ingin Anda bagikan di seluruh proses.

capacity
Int64

Ukuran maksimum, dalam byte, untuk dialokasikan ke file yang dipetakan memori.

access
MemoryMappedFileAccess

Salah satu nilai enumerasi yang menentukan jenis akses yang diizinkan ke file yang dipetakan memori. Default adalah ReadWrite.

options
MemoryMappedFileOptions

Kombinasi bitwise dari nilai enumerasi yang menentukan opsi alokasi memori untuk file yang dipetakan memori.

inheritability
HandleInheritability

Nilai yang menentukan apakah handel ke file yang dipetakan memori dapat diwariskan oleh proses anak. Default adalah None.

Mengembalikan

File yang dipetakan memori yang memiliki karakteristik yang ditentukan.

Pengecualian

mapName adalah string kosong.

-atau-

access diatur ke tulis-saja dengan Write nilai enumerasi.

capacity kurang dari atau sama dengan nol.

-atau-

access bukan nilai enumerasi yang valid MemoryMappedFileAccess .

-atau-

inheritability bukan nilai yang valid HandleInheritability .

Hanya .NET Core dan .NET 5+: Panggilan ke CreateNew metode dengan file yang dipetakan memori bernama (yaitu, non-null mapName) hanya didukung pada sistem operasi Windows.

Berlaku untuk

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

Membuat file yang dipetakan memori yang memiliki kapasitas, jenis akses, alokasi memori, izin keamanan, dan pewarisan yang ditentukan dalam memori sistem.

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

Parameter

mapName
String

Nama yang akan ditetapkan ke file yang dipetakan memori, atau null untuk MemoryMappedFile yang tidak ingin Anda bagikan di seluruh proses.

capacity
Int64

Ukuran maksimum, dalam byte, untuk dialokasikan ke file yang dipetakan memori.

access
MemoryMappedFileAccess

Salah satu nilai enumerasi yang menentukan jenis akses yang diizinkan ke file yang dipetakan memori. Default adalah ReadWrite.

options
MemoryMappedFileOptions

Kombinasi bitwise dari nilai enumerasi yang menentukan opsi alokasi memori untuk file yang dipetakan memori.

memoryMappedFileSecurity
MemoryMappedFileSecurity

Izin yang dapat diberikan untuk akses file dan operasi pada file yang dipetakan memori.

Parameter ini dapat berupa null.

inheritability
HandleInheritability

Salah satu nilai enumerasi yang menentukan apakah handel ke file yang dipetakan memori dapat diwariskan oleh proses anak. Default adalah None.

Mengembalikan

File yang dipetakan memori yang memiliki karakteristik yang ditentukan.

Atribut

Pengecualian

mapName adalah string kosong.

-atau-

access diatur ke tulis-saja dengan Write nilai enumerasi.

capacity kurang dari atau sama dengan nol.

-atau-

access bukan nilai enumerasi yang valid MemoryMappedFileAccess .

-atau-

inheritability bukan nilai enumerasi yang valid HandleInheritability .

Keterangan

Gunakan metode ini untuk membuat file yang dipetakan memori yang tidak bertahan (yaitu, tidak terkait dengan file pada disk), yang dapat Anda gunakan untuk berbagi data antar proses.

Lihat juga

Berlaku untuk