Partilhar via


MessageBuffer.Close Método

Definição

Termina de trabalhar com o buffer.

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

Exemplos

O exemplo a seguir demonstra como fechar corretamente um buffer de mensagens.

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();
}

Comentários

Você sempre deve fechar uma MessageBuffer instância chamando Close quando terminar de trabalhar com ela. Isso permite que os recursos do sistema sejam potencialmente liberados mais cedo.

Se você tiver chamado CreateBufferedCopy para criar um buffer de mensagem de uma mensagem e inspecionado a mensagem usando CreateMessage, receberá um InvalidOperationException quando tentar fechar o buffer usando esse método. Para evitar esse problema, você precisa recriar a mensagem do buffer antes de fechar. Consulte o exemplo de código na seção Exemplo para obter uma demonstração do cenário anterior e uma maneira de resolve esse problema.

Aplica-se a