Aracılığıyla paylaş


MemoryMappedFile Sınıf

Tanım

Belleğe eşlenmiş bir dosyayı temsil eder.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Devralma
MemoryMappedFile
Uygulamalar

Örnekler

Aşağıdaki örnek, son derece büyük bir dosyanın bir bölümünün belleğe eşlenmiş bir görünümünü oluşturur ve bir bölümünü işler.

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

Açıklamalar

Belleğe eşlenen dosya, bir dosyanın içeriğini uygulamanın mantıksal adres alanına eşler. Bellek eşlemeli dosyalar, bellek eşzamanlı olarak yönetilebildiği ve aramaya gerek kalmadan bir dosyaya tam, rastgele erişime izin verdikleri için programcıların son derece büyük dosyalarla çalışmasını sağlar. Belleğe eşlenen dosyalar birden çok işlem arasında da paylaşılabilir.

Yöntemler, CreateFromFile belirtilen bir yoldan veya diskte var olan bir dosyadan bellekle eşlenmiş bir FileStream dosya oluşturur. Dosya eşlenmediğinde değişiklikler diske otomatik olarak yayılır.

Yöntemler, CreateNew diskte var olan bir dosyayla eşlenmeyen ve işlemler arası iletişim (IPC) için paylaşılan bellek oluşturmak için uygun olan belleğe eşlenmiş bir dosya oluşturur.

Belleğe eşlenen bir dosya, bellekle eşlenen dosyanın diğer işlemlerle paylaşılmasını sağlayan isteğe bağlı bir adla ilişkilendirilebilir.

Dosyanın bölümlerinin görünümleri de dahil olmak üzere bellekle eşlenen dosyanın birden çok görünümünü oluşturabilirsiniz. Eşzamanlı bellek oluşturmak için dosyanın aynı bölümünü birden fazla adresle eşleyebilirsiniz. İki görünümün eşzamanlı kalması için bunların aynı bellek eşlemeli dosyadan oluşturulması gerekir. Aynı dosyanın iki görünümüyle iki dosya eşlemesi oluşturmak eşzamanlılık sağlamaz.

Özellikler

SafeMemoryMappedFileHandle

Bellekle eşlenen bir dosyanın dosya tanıtıcısını alır.

Yöntemler

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

Belirtilen erişim modu, ad, devralınabilirlik ve kapasiteye sahip mevcut bir dosyadan belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)

Disk üzerindeki bir dosyadan belirtilen ada, kapasiteye, erişim türüne, güvenlik izinlerine, devralınabilirlik ve atma gereksinimine sahip belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(SafeFileHandle, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

ve belirtilen erişim modunu, adı, devralınabilirliği ve kapasiteyi kullanarak mevcut bir dosyadan belleğe eşlenmiş bir SafeFileHandle dosya oluşturur.

CreateFromFile(String)

Disk üzerindeki bir dosyadan belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode)

Disk üzerindeki bir dosyadan belirtilen erişim moduna sahip, belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode, String)

Disk üzerindeki bir dosyadan belirtilen erişim moduna ve ada sahip, belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode, String, Int64)

Disk üzerindeki bir dosyadan belirtilen erişim moduna, ada ve kapasiteye sahip, belleğe eşlenmiş bir dosya oluşturur.

CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)

Disk üzerindeki bir dosyadan belirtilen erişim moduna, ada, kapasiteye ve erişim türüne sahip, belleğe eşlenmiş bir dosya oluşturur.

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.

CreateOrOpen(String, Int64)

Sistem belleğinde belirtilen ada ve kapasiteye sahip, belleğe eşlenmiş bir dosya oluşturur veya açar.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

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

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

Yeni bir boş bellek eşlenmiş dosyası oluşturur veya aynı ada sahip bir dosya varsa, var olan bir bellek eşlenmiş dosyasını açar. Varolan bir dosyayı açarsanız kapasite, seçenekler ve bellek bağımsız değişkenleri yoksayılır.

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

Belirtilen ada, 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 veya açar.

CreateViewAccessor()

MemoryMappedViewAccessor Bellekle eşlenen dosyanın görünümüne eşlenen bir oluşturur.

CreateViewAccessor(Int64, Int64)

MemoryMappedViewAccessor Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık ve boyuta sahip bir oluşturur.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

MemoryMappedViewAccessor Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık, boyut ve erişim kısıtlamalarına sahip olan bir oluşturur.

CreateViewStream()

Bellekle eşlenen dosyanın görünümüne eşlenen bir akış oluşturur.

CreateViewStream(Int64, Int64)

Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık ve boyuta sahip bir akış oluşturur.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Bellekle eşlenen dosyanın görünümüne eşlenen ve belirtilen uzaklık, boyut ve erişim türüne sahip bir akış oluşturur.

Dispose()

MemoryMappedFile tarafından kullanılan tüm kaynakları serbest bırakır.

Dispose(Boolean)

MemoryMappedFile tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetAccessControl()

Bellekle eşlenen dosya kaynağına erişim denetimini alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
OpenExisting(String)

Sistem belleğinde belirtilen ada sahip, bellekle eşlenmiş mevcut bir dosyayı açar.

OpenExisting(String, MemoryMappedFileRights)

Sistem belleğinde belirtilen ada ve erişim haklarına sahip, bellekle eşlenmiş mevcut bir dosyayı açar.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Belirtilen ada, erişim haklarına ve sistem belleğinde devralınabilirliğe sahip, bellekle eşlenmiş mevcut bir dosyayı açar.

SetAccessControl(MemoryMappedFileSecurity)

Erişim denetimini belleğe eşlenmiş dosya kaynağına ayarlar.

ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.