MessageBuffer.Close 方法

定义

完成使用缓冲区。

public:
 abstract void Close();
public abstract void Close();
abstract member Close : unit -> unit
Public MustOverride Sub Close ()

示例

以下示例演示如何正确关闭消息缓冲区。

public void AfterReceiveReply(ref Message reply, object correlationState)
{
    // Create the buffer.
    MessageBuffer buffer = reply.CreateBufferedCopy(13000);
    // Inspect the response (for example, extract the body contents).
    Message thisReply = buffer.CreateMessage();
    XmlDictionaryReader reader = thisReply.GetReaderAtBodyContents();
    var info = new StringBuilder();
    XmlWriter writer = XmlWriter.Create(info);
    writer.WriteNode(reader, true);
    writer.Close();
    // Resolution:  Re-create the message from the buffer before
    // closing.
    reply = buffer.CreateMessage();
    // You can close the buffer after the message has been recreated.
    buffer.Close();
}

注解

使用完实例后,应始终通过调用MessageBuffer来关闭Close实例。 这样,系统资源就可以更快地释放。

如果已调用 CreateBufferedCopy 以创建消息的消息缓冲区,并使用检查消息 CreateMessage,则尝试使用此方法关闭缓冲区时,将得到一个 InvalidOperationException 。 若要避免此问题,需要在关闭之前从缓冲区重新创建消息。 请参阅“示例”部分中的代码示例,了解上一个方案的演示和解决此问题的方法。

适用于