Condividi tramite


MessageBuffer.Close Metodo

Definizione

Finisce di utilizzare il buffer.

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

Esempio

Nell'esempio seguente viene illustrato come chiudere correttamente un buffer di messaggi.

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

Commenti

Quando un'istanza MessageBuffer non viene più utilizzata, è necessario chiuderla sempre chiamando Close . In tal modo è possibile che le risorse di sistema vengano potenzialmente sbloccate prima.

Se è stato chiamato il metodo CreateBufferedCopy per creare un buffer di messaggi di un messaggio e il messaggio è stato controllato utilizzando il metodo CreateMessage, quando si tenta di chiudere il buffer utilizzando questo metodo viene generata un'eccezione InvalidOperationException. Per evitare questo problema è necessario ricreare il messaggio dal buffer prima che il buffer venga chiuso. Per una dimostrazione dello scenario descritto sopra e un esempio di risoluzione del problema, vedere l'esempio di codice riportato nella sezione Esempio.

Si applica a