2010-09-06 29 views

cevap

6

Yapamazsınız, soyut bir sınıftır. Bunun tek görünür somut uygulaması, System.IO.MemoryMappedFiles ad alanındaki sınıflar için bir yardımcı sınıf olan SafeMemoryMappedViewHandle'dır. Bellek eşlemeli dosyaların çalışmasını sağlayan tesisat ile düzgün bir şekilde başlatılabildiğinden erişilemez bir kurucuya sahiptir.

Kullanım durumu, bir tanıtıcı tarafından yönetilen, yönetilmeyen belleğe eşlenen bir IntPtr'dir. Örneğin, Windows API, MapViewOfFile veya GlobalAllocPtr oldukça nadirdir. Kendi kendinize oluşturmak istiyorsanız, SafeBuffer'dan türetmeniz gerekir, böylece kurucusunu arayabilir ve “AcquirePointer” diyebilirsiniz. Bunun çoğu güvensiz. gerçekten ne yapmaya çalışıyorsunuz?

+0

Diskten çok büyük bir dosyayı (bytestream) bir UnmanagedMemoryStream'e okumaya çalışıyorum. Dosya, bytrayray'ın tutabileceği maksimum bayt sayısından daha büyüktür. – ManInMoon

+0

Eh, bellek eşlenen dosyaları için .NET 4.0 desteğini kullanın. MemoryMappedViewStream yeniden icat anlamsız. Aslında dosyayı daha hızlı okumayı başaramaz. –

+0

Teşekkürler Hans. Bunu denedim ama MemoryMappedFiles çok yavaş – ManInMoon

İlgili konular