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 が返されます。 この問題を回避するには、閉じる前に、バッファーからメッセージを作成し直す必要があります。 前述したシナリオおよびこの問題を解決する方法については、「使用例」のセクションのコード サンプルを参照してください。

適用対象