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 ответ при попытке закрыть буфер с помощью этого метода. Чтобы избежать этой проблемы, необходимо повторно создать сообщение из буфера перед закрытием. См. пример кода в разделе "Пример" для демонстрации предыдущего сценария и способа устранения этой проблемы.

Применяется к