Aracılığıyla paylaş


MessageBuffer.Close Yöntem

Tanım

Arabellekle çalışmayı tamamlar.

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

Örnekler

Aşağıdaki örnekte, bir ileti arabelleğinin düzgün bir şekilde nasıl kapatılma adımları gösterilmektedir.

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

Açıklamalar

Bir örneği çalışmayı bitirdiğinizde her zaman çağırarak Close kapatmalısınızMessageBuffer. Bu, sistem kaynaklarının daha erken boşaltılmasını sağlar.

bir iletinin ileti arabelleği oluşturmak için çağrısında CreateBufferedCopy bulunduysanız ve kullanarak CreateMessageiletiyi incelediyseniz, bu yöntemi kullanarak arabelleği kapatmayı denediğinizde bir InvalidOperationException alırsınız. Bu sorunu önlemek için kapatmadan önce arabellekten iletiyi yeniden oluşturmanız gerekir. Önceki senaryonun bir gösterimi ve bu sorunu çözmenin bir yolu için Örnek bölümündeki kod örneğine bakın.

Şunlara uygulanır