Freigeben über


MessageBuffer.Close Methode

Definition

Beendet die Arbeit mit dem Puffer.

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

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie ein Nachrichtenpuffer ordnungsgemäß geschlossen wird.

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

Hinweise

Sie sollten eine MessageBuffer-Instanz immer schließen, indem Sie Close aufrufen, wenn sie nicht weiter benötigt wird. Dadurch können Systemressourcen möglicherweise früher freigegeben werden.

Wenn Sie CreateBufferedCopy aufgerufen haben, um einen Nachrichtenpuffer einer Nachricht zu erstellen, und die Nachricht mit CreateMessage überprüft haben, wird beim Versuch, den Puffer mit dieser Methode zu schließen, eine InvalidOperationException ausgelöst. Um dieses Problem zu vermeiden, müssen Sie vor Schließung die Nachricht vom Puffer neu erstellen. Im Abschnitt mit den Beispielen finden Sie eine Demonstration des zuvor genannten Szenarios sowie eine Möglichkeit, dieses Problem zu lösen.

Gilt für: