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 örnek, bir ileti arabelleğinin düzgün bir şekilde nasıl kapatılma işlemini gösterir.

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 MessageBuffer kapatmalısınızClose. Bu, sistem kaynaklarının potansiyel olarak daha erken serbest olmasını sağlar.

Bir iletinin ileti arabelleği oluşturmak için çağırdıysanız CreateBufferedCopy 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 iletiyi arabellekten yeniden oluşturmanız gerekir. Önceki senaryonun gösterimi ve bu sorunu çözmenin bir yolu için Örnek bölümündeki kod örneğine bakın.

Şunlara uygulanır