MessageBuffer.WriteMessage(Stream) 方法

定义

将此缓冲区中的整个内容写入指定的 IO 流。Writes the entire content of this buffer to the specified IO stream.

public:
 virtual void WriteMessage(System::IO::Stream ^ stream);
public virtual void WriteMessage (System.IO.Stream stream);
abstract member WriteMessage : System.IO.Stream -> unit
override this.WriteMessage : System.IO.Stream -> unit
Public Overridable Sub WriteMessage (stream As Stream)

参数

stream
Stream

一个 IO 流,此缓冲区中的整个内容都会写入此 IO 流。An IO stream that the entire content of this buffer is written to.

示例

private byte[] ConvertMessageToByteArray(ref Message message)   
{  
    // Memory stream that contains the message.
    var stream = new MemoryStream();  
    // Create an XmlWriter to serialize the message into a byte array.
    var settings = new XmlWriterSettings();
    settings.Encoding = System.Text.Encoding.UTF8;
    XmlWriter writer = XmlWriter.Create(stream, settings);
    // Copy the message into a buffer.
    // Note: This call changes the original message's state.
    MessageBuffer buffer = message.CreateBufferedCopy(int.MaxValue);  
    // Create a copy of the message.
    message = buffer.CreateMessage();  
    // Serialize the message to the XmlWriter.
    message.WriteMessage(writer);  
    // Recreate the message.
    message = buffer.CreateMessage();
    // Flush the contents of the writer so that the stream gets updated.
    writer.Flush();  
    stream.Flush();  
    // Convert the stream to an array.
    byte[] retval = stream.ToArray();
    return retval;
}  

注解

此功能使用的是二进制编码器,而不是 UTF-8 编码器。This function uses a binary encoder instead of a UTF-8 encoder. 因此,无法直接从 MessageBuffer 转换到 MessageTherefore, you cannot directly convert from a MessageBuffer to a Message. 示例部分的代码演示如何解决这个问题。The code in the example section shows how to work around this problem.

适用于