Click or drag to resize
MimeKit

MemoryBlockStream Class

An efficient memory stream implementation that sacrifices the ability to get access to the internal byte buffer in order to drastically improve performance.
Inheritance Hierarchy
SystemObject
  SystemMarshalByRefObject
    System.IOStream
      MimeKit.IOMemoryBlockStream

Namespace: MimeKit.IO
Assembly: MimeKit (in MimeKit.dll) Version: 4.7.1
Syntax
C#
public class MemoryBlockStream : Stream

The MemoryBlockStream type exposes the following members.

Constructors
 NameDescription
Public methodMemoryBlockStream Initialize a new instance of the MemoryBlockStream class.
Top
Properties
 NameDescription
Public propertyCanRead Check whether or not the stream supports reading.
(Overrides StreamCanRead)
Public propertyCanSeek Check whether or not the stream supports seeking.
(Overrides StreamCanSeek)
Public propertyCanTimeout Check whether or not reading and writing to the stream can timeout.
(Overrides StreamCanTimeout)
Public propertyCanWrite Check whether or not the stream supports writing.
(Overrides StreamCanWrite)
Public propertyLength Get the length of the stream, in bytes.
(Overrides StreamLength)
Public propertyPosition Get or set the current position within the stream.
(Overrides StreamPosition)
Public propertyReadTimeout
(Inherited from Stream)
Public propertyWriteTimeout
(Inherited from Stream)
Top
Methods
 NameDescription
Public methodBeginRead
(Inherited from Stream)
Public methodBeginWrite
(Inherited from Stream)
Public methodClose
(Inherited from Stream)
Public methodCopyTo(Stream)
(Inherited from Stream)
Public methodCopyTo(Stream, Int32)
(Inherited from Stream)
Public methodCopyToAsync(Stream)
(Inherited from Stream)
Public methodCopyToAsync(Stream, Int32)
(Inherited from Stream)
Public methodCopyToAsync(Stream, Int32, CancellationToken)
(Inherited from Stream)
Public methodCreateObjRef
(Inherited from MarshalByRefObject)
Protected methodCreateWaitHandleObsolete.

(Inherited from Stream)
Public methodDispose
(Inherited from Stream)
Protected methodDispose(Boolean) Release the unmanaged resources used by the MemoryBlockStream and optionally releases the managed resources.
(Overrides StreamDispose(Boolean))
Public methodEndRead
(Inherited from Stream)
Public methodEndWrite
(Inherited from Stream)
Public methodEquals
(Inherited from Object)
Protected methodFinalize
(Inherited from Object)
Public methodFlush Clear all buffers for this stream and causes any buffered data to be written to the underlying device.
(Overrides StreamFlush)
Public methodFlushAsync
(Inherited from Stream)
Public methodFlushAsync(CancellationToken) Asynchronously clear all buffers for this stream and causes any buffered data to be written to the underlying device.
(Overrides StreamFlushAsync(CancellationToken))
Public methodGetHashCode
(Inherited from Object)
Public methodGetLifetimeService
(Inherited from MarshalByRefObject)
Public methodGetType
(Inherited from Object)
Public methodInitializeLifetimeService
(Inherited from MarshalByRefObject)
Protected methodMemberwiseClone
(Inherited from Object)
Protected methodMemberwiseClone(Boolean)
(Inherited from MarshalByRefObject)
Protected methodObjectInvariantObsolete.

(Inherited from Stream)
Public methodRead Read a sequence of bytes from the stream and advances the position within the stream by the number of bytes read.
(Overrides StreamRead(Byte, Int32, Int32))
Public methodReadAsync(Byte, Int32, Int32)
(Inherited from Stream)
Public methodReadAsync(Byte, Int32, Int32, CancellationToken) Asynchronously read a sequence of bytes from the stream and advances the position within the stream by the number of bytes read.
(Overrides StreamReadAsync(Byte, Int32, Int32, CancellationToken))
Public methodReadByte
(Inherited from Stream)
Public methodSeek Set the position within the current stream.
(Overrides StreamSeek(Int64, SeekOrigin))
Public methodSetLength Set the length of the stream.
(Overrides StreamSetLength(Int64))
Public methodToArray Copy the memory stream into a byte array.
Public methodToString
(Inherited from Object)
Public methodWrite Write a sequence of bytes to the stream and advances the current position within this stream by the number of bytes written.
(Overrides StreamWrite(Byte, Int32, Int32))
Public methodWriteAsync(Byte, Int32, Int32)
(Inherited from Stream)
Public methodWriteAsync(Byte, Int32, Int32, CancellationToken) Asynchronously write a sequence of bytes to the stream and advances the current position within this stream by the number of bytes written.
(Overrides StreamWriteAsync(Byte, Int32, Int32, CancellationToken))
Public methodWriteByte
(Inherited from Stream)
Top
Remarks
Instead of resizing an internal byte array, the MemoryBlockStream chains blocks of non-contiguous memory. This helps improve performance by avoiding unneeded copying of data from the old array to the newly allocated array as well as the zeroing of the newly allocated array.
See Also