¿Puede alguien decirme para qué se usa la clase UnmanagedMemoryStream
?¿Para qué sirve UnmanagedMemoryStream?
¿No soy capaz de descubrir cómo y cuándo esta clase podría ser útil?
¿Puede alguien decirme para qué se usa la clase UnmanagedMemoryStream
?¿Para qué sirve UnmanagedMemoryStream?
¿No soy capaz de descubrir cómo y cuándo esta clase podría ser útil?
UnmanagedMemoryStream
le permite acceder a la memoria que no ha sido asignada por Common Language Runtime, que es útil principalmente si desea acceder a la memoria asignada por código no administrado a través de la interfaz Stream
(por ejemplo, porque ya tiene código que opera en secuencias)
Por supuesto, no hay nada que le impide la asignación de memoria no administrada desde dentro de C# a través de la clase Marshal
y envolviendo que en un UnmanagedMemoryStream
, pero eso es sólo hacer la vida más difícil, ya que se podría haber utilizado MemoryStream
lugar y es muy, muy poco probable que asumir el control manual de la memoria que respalda la transmisión ofrecerá algún beneficio.
El uso de UnmanagedMemoryStream le permite leer una secuencia no administrada sin copiar todo en el almacenamiento dinámico administrado primero, por lo tanto, requiere menos memoria cuando se trata de flujos no administrados. Esto también le permite evitar las limitaciones de memoria si tiene que lidiar con una gran cantidad de datos. Aquí hay un breve artículo sobre el UnmanagedMemoryStream.
Editar: Tenga en cuenta que hay una limitación de 2 GB con MemoryStream, por lo que debe utilizar UnmanagedMemoryStream si supera esta limitación.
Hola, he leído el artículo que mencionaste anteriormente. Es solo que quería saber si este es realmente el verdadero beneficio. Muchas gracias por sus comentarios :) – HIyer