MessageBuffer.Close 메서드

정의

버퍼 작업을 마칩니다.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.

적용 대상