2010-09-06 11 views

Répondre

6

Vous ne pouvez pas, c'est une classe abstraite. La seule implémentation concrète visible est SafeMemoryMappedViewHandle, une classe d'assistance pour les classes de l'espace de noms System.IO.MemoryMappedFiles. Il a un constructeur non accessible car il ne peut être initialisé correctement que par la plomberie qui fait fonctionner les fichiers mappés en mémoire.

Le cas d'utilisation est un IntPtr qui correspond à une mémoire non gérée, gérée par un handle. Assez rare dans l'API Windows, MapViewOfFile ou GlobalAllocPtr par exemple. Si vous voulez créer le vôtre, vous devez dériver de SafeBuffer pour pouvoir appeler son constructeur et appeler, par exemple, AcquirePointer. La plupart de ceci est dangereux. Que faites-vous vraiment en essayant de faire?

+0

J'essaye de lire un très gros fichier (bytestream) du disque dans un UnmanagedMemoryStream. Le fichier est supérieur au nombre maximal d'octets qu'un bytearray peut contenir. – ManInMoon

+0

Eh bien, utilisez le support .NET 4.0 pour les fichiers mappés en mémoire. Inutile de réinventer MemoryMappedViewStream. Cela ne rend pas la lecture du fichier plus rapide. –

+0

Merci Hans. J'ai essayé cela mais MemoryMappedFiles sont très lents – ManInMoon