MemoryMappedFile Kelas
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.
Mewakili file yang dipetakan memori.
public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
- Warisan
-
MemoryMappedFile
- Penerapan
Contoh
Contoh berikut membuat tampilan yang dipetakan memori dari bagian dari file yang sangat besar dan memanipulasi sebagian darinya.
using System;
using System.IO;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;
class Program
{
static void Main(string[] args)
{
long offset = 0x10000000; // 256 megabytes
long length = 0x20000000; // 512 megabytes
// Create the memory-mapped file.
using (var mmf = MemoryMappedFile.CreateFromFile(@"c:\ExtremelyLargeImage.data", FileMode.Open,"ImgA"))
{
// Create a random access view, from the 256th megabyte (the offset)
// to the 768th megabyte (the offset plus length).
using (var accessor = mmf.CreateViewAccessor(offset, length))
{
int colorSize = Marshal.SizeOf(typeof(MyColor));
MyColor color;
// Make changes to the view.
for (long i = 0; i < length; i += colorSize)
{
accessor.Read(i, out color);
color.Brighten(10);
accessor.Write(i, ref color);
}
}
}
}
}
public struct MyColor
{
public short Red;
public short Green;
public short Blue;
public short Alpha;
// Make the view brighter.
public void Brighten(short value)
{
Red = (short)Math.Min(short.MaxValue, (int)Red + value);
Green = (short)Math.Min(short.MaxValue, (int)Green + value);
Blue = (short)Math.Min(short.MaxValue, (int)Blue + value);
Alpha = (short)Math.Min(short.MaxValue, (int)Alpha + value);
}
}
Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Runtime.InteropServices
Class Program
Sub Main()
Dim offset As Long = &H10000000 ' 256 megabytes
Dim length As Long = &H20000000 ' 512 megabytes
' Create the memory-mapped file.
Using mmf = MemoryMappedFile.CreateFromFile("c:\ExtremelyLargeImage.data", FileMode.Open, "ImgA")
' Create a random access view, from the 256th megabyte (the offset)
' to the 768th megabyte (the offset plus length).
Using accessor = mmf.CreateViewAccessor(offset, length)
Dim colorSize As Integer = Marshal.SizeOf(GetType(MyColor))
Dim color As MyColor
Dim i As Long = 0
' Make changes to the view.
Do While (i < length)
accessor.Read(i, color)
color.Brighten(10)
accessor.Write(i, color)
i += colorSize
Loop
End Using
End Using
End Sub
End Class
Public Structure MyColor
Public Red As Short
Public Green As Short
Public Blue As Short
Public Alpha As Short
' Make the view brighter.
Public Sub Brighten(ByVal value As Short)
Red = CType(Math.Min(Short.MaxValue, (CType(Red, Integer) + value)), Short)
Green = CType(Math.Min(Short.MaxValue, (CType(Green, Integer) + value)), Short)
Blue = CType(Math.Min(Short.MaxValue, (CType(Blue, Integer) + value)), Short)
Alpha = CType(Math.Min(Short.MaxValue, (CType(Alpha, Integer) + value)), Short)
End Sub
End Structure
Keterangan
File yang dipetakan memori memetakan konten file ke ruang alamat logis aplikasi. File yang dipetakan memori memungkinkan programmer untuk bekerja dengan file yang sangat besar karena memori dapat dikelola secara bersamaan, dan memungkinkan akses acak lengkap ke file tanpa perlu mencari. File yang dipetakan memori juga dapat dibagikan di beberapa proses.
Metode CreateFromFile membuat file yang dipetakan memori dari jalur tertentu atau FileStream file yang ada pada disk. Perubahan secara otomatis disebarluaskan ke disk ketika file tidak dipetakan.
Metode CreateNew membuat file yang dipetakan memori yang tidak dipetakan ke file yang ada pada disk; dan cocok untuk membuat memori bersama untuk komunikasi antarprosedur (IPC).
File yang dipetakan memori dapat dikaitkan dengan nama opsional yang memungkinkan file yang dipetakan memori dibagikan dengan proses lain.
Anda dapat membuat beberapa tampilan file yang dipetakan memori, termasuk tampilan bagian file. Anda dapat memetakan bagian file yang sama ke lebih dari satu alamat untuk membuat memori bersamaan. Agar dua tampilan tetap bersamaan, mereka harus dibuat dari file yang dipetakan memori yang sama. Membuat dua pemetaan file dari file yang sama dengan dua tampilan tidak memberikan konkurensi.
Properti
SafeMemoryMappedFileHandle |
Mendapatkan handel file dari file yang dipetakan memori. |
Metode
CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean) |
Membuat file yang dipetakan memori dari file yang ada dengan mode akses, nama, pewarisan, dan kapasitas yang ditentukan. |
CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean) |
Membuat file yang dipetakan memori yang memiliki nama, kapasitas, jenis akses, izin keamanan, pewarisan, dan persyaratan pembuangan yang ditentukan dari file pada disk. |
CreateFromFile(SafeFileHandle, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean) |
Membuat file yang dipetakan memori dari file yang ada menggunakan SafeFileHandle dan mode akses, nama, pewarisan, dan kapasitas yang ditentukan. |
CreateFromFile(String) |
Membuat file yang dipetakan memori dari file pada disk. |
CreateFromFile(String, FileMode) |
Membuat file yang dipetakan memori yang memiliki mode akses yang ditentukan dari file pada disk. |
CreateFromFile(String, FileMode, String) |
Membuat file yang dipetakan memori yang memiliki mode akses dan nama yang ditentukan dari file pada disk. |
CreateFromFile(String, FileMode, String, Int64) |
Membuat file yang dipetakan memori yang memiliki mode akses, nama, dan kapasitas yang ditentukan dari file pada disk. |
CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess) |
Membuat file yang dipetakan memori yang memiliki mode akses, nama, kapasitas, dan jenis akses yang ditentukan dari file pada disk. |
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. |
CreateOrOpen(String, Int64) |
Membuat atau membuka file yang dipetakan memori yang memiliki nama dan kapasitas yang ditentukan dalam memori sistem. |
CreateOrOpen(String, Int64, MemoryMappedFileAccess) |
Membuat atau membuka file yang dipetakan memori yang memiliki nama, kapasitas, dan jenis akses yang ditentukan dalam memori sistem. |
CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Membuat file yang dipetakan memori kosong baru atau membuka file yang dipetakan memori yang ada jika ada dengan nama yang sama. Jika membuka file yang ada, argumen kapasitas, opsi, dan memori akan diabaikan. |
CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Membuat atau membuka file yang dipetakan memori yang memiliki nama, kapasitas, jenis akses, alokasi memori, izin keamanan, dan warisan yang ditentukan dalam memori sistem. |
CreateViewAccessor() |
MemoryMappedViewAccessor Membuat yang memetakan ke tampilan file yang dipetakan memori. |
CreateViewAccessor(Int64, Int64) |
MemoryMappedViewAccessor Membuat yang memetakan ke tampilan file yang dipetakan memori, dan yang memiliki offset dan ukuran yang ditentukan. |
CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess) |
MemoryMappedViewAccessor Membuat yang memetakan ke tampilan file yang dipetakan memori, dan yang memiliki pembatasan offset, ukuran, dan akses yang ditentukan. |
CreateViewStream() |
Membuat aliran yang memetakan ke tampilan file yang dipetakan memori. |
CreateViewStream(Int64, Int64) |
Membuat aliran yang memetakan ke tampilan file yang dipetakan memori, dan yang memiliki offset dan ukuran yang ditentukan. |
CreateViewStream(Int64, Int64, MemoryMappedFileAccess) |
Membuat aliran yang memetakan ke tampilan file yang dipetakan memori, dan yang memiliki offset, ukuran, dan jenis akses yang ditentukan. |
Dispose() |
Merilis semua sumber daya yang MemoryMappedFiledigunakan oleh . |
Dispose(Boolean) |
Merilis sumber daya tidak terkelola yang digunakan oleh MemoryMappedFile dan secara opsional merilis sumber daya terkelola. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetAccessControl() |
Mendapatkan kontrol akses ke sumber daya file yang dipetakan memori. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
OpenExisting(String) |
Membuka file yang dipetakan memori yang ada yang memiliki nama yang ditentukan dalam memori sistem. |
OpenExisting(String, MemoryMappedFileRights) |
Membuka file yang dipetakan memori yang ada yang memiliki nama dan hak akses yang ditentukan dalam memori sistem. |
OpenExisting(String, MemoryMappedFileRights, HandleInheritability) |
Membuka file yang dipetakan memori yang ada yang memiliki nama, hak akses, dan warisan yang ditentukan dalam memori sistem. |
SetAccessControl(MemoryMappedFileSecurity) |
Mengatur kontrol akses ke sumber daya file yang dipetakan memori. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |