다음을 통해 공유


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 하여 항상 instance 닫아야 합니다. 이렇게 하면 시스템 리소스를 더 빨리 해제할 수 있습니다.

를 호출 CreateBufferedCopy 하여 메시지의 메시지 버퍼를 만들고 를 사용하여 CreateMessage메시지를 검사한 경우 이 메서드를 InvalidOperationException 사용하여 버퍼를 닫으려고 하면 이 표시됩니다. 이 문제를 방지하려면 닫기 전에 버퍼에서 메시지를 다시 만들어야 합니다. 이전 시나리오의 데모와 이 문제를 resolve 방법은 예제 섹션의 코드 샘플을 참조하세요.

적용 대상