MessageBuffer.Close MessageBuffer.Close MessageBuffer.Close MessageBuffer.Close Method

定義

バッファーの使用を終了します。Finishes working with the buffer.

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

次の例では、メッセージ バッファーを正しく閉じる方法を示します。The following example demonstrates how to properly close a message buffer.

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();  
    StringBuilder 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 インスタンスを閉じる必要があります。You should always close a MessageBuffer instance by calling Close when finished working with it. これにより、システム リソースを迅速に解放できる可能性があります。This allows system resources to potentially be freed sooner.

CreateBufferedCopy を呼び出してメッセージのメッセージ バッファーを作成し、CreateMessage を使用してメッセージを検査した場合は、このメソッドを使用してバッファーを閉じようとすると、InvalidOperationException が返されます。If you have called CreateBufferedCopy to create a message buffer of a message, and inspected the message using CreateMessage, you will get a InvalidOperationException when you attempt to close the buffer using this method. この問題を回避するには、閉じる前に、バッファーからメッセージを作成し直す必要があります。To avoid this problem, you need to recreate the message from the buffer before closing. 前述したシナリオおよびこの問題を解決する方法については、「使用例」のセクションのコード サンプルを参照してください。See the code sample in the Example section for a demonstration of the previous scenario and a way to resolve this problem.

適用対象