MemoryMappedFile.CreateNew Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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:
Proses A membuat file yang dipetakan memori dan menulis nilainya.
Proses B membuka file yang dipetakan memori dan menulis nilainya.
Proses C membuka file yang dipetakan memori dan menulis nilainya.
Proses A membaca dan menampilkan nilai dari file yang dipetakan memori.
Setelah Proses A selesai dengan file yang dipetakan memori, file segera diklaim kembali oleh pengumpulan sampah.
Untuk menjalankan contoh ini, lakukan hal berikut:
Kompilasi aplikasi dan buka tiga jendela Perintah.
Di jendela Perintah pertama, jalankan Proses A.
Di jendela Perintah kedua, jalankan Proses B.
Kembali ke Proses A dan tekan ENTER.
Di jendela Perintah ketiga, jalankan Proses C.
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
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
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
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk