Freigeben über


IHttpCacheSpecificData::D ereferenceCacheData-Methode

Verringert die anzahl der internen Verweise für die zwischengespeicherten Daten.

Syntax

virtual VOID DereferenceCacheData(  
   VOID  
) = 0;  

Parameter

Diese Methode nimmt zwei Parameter entgegen.

Threadsicherheit

Klassen, die die IHttpCacheSpecificData-Schnittstelle implementieren, sind threadsicher für die DereferenceCacheDataReferenceCacheData - und -Methoden.

Bemerkungen

Klassen, die die IHttpCacheSpecificData Schnittstelle implementieren, verwenden die Verweiszählung, die threadsicher für die Speicherverwaltung ist. Wenn ein IHttpCacheSpecificData Zeiger erstellt wird, wird die interne Verweisanzahl (eine private Membervariable) auf 1 festgelegt. Wenn die ReferenceCacheData -Methode aufgerufen wird, wird diese Verweisanzahl um 1 erhöht. Wenn die DereferenceCacheData -Methode aufgerufen wird, wird dieselbe Verweisanzahl um 1 verringert. Nur wenn die Verweisanzahl auf 0 geht, wird der IHttpCacheSpecificData Zeiger aus dem Heap entfernt. Dieses Schema garantiert, dass der IHttpCacheSpecificData Zeiger erst gelöscht wird, wenn der letzte Client dieses Zeigers aufruft DereferenceCacheData.

Hinweise für Implementierer

Die ReferenceCacheData Methodenimplementierungen und DereferenceCacheData sollten für eine IHttpCacheSpecificData Schnittstelle threadsicher sein. Implementierer sollten oder private Destruktoren bereitstellenprotected, die intern nur aufgerufen werden, wenn die Verweisanzahl auf 0 geht.

Hinweise für Aufrufer

Clients sollten niemals versuchen, eine IHttpCacheSpecificData Schnittstelle in eine spezifischere Klasse zu umwandeln und dann direkt aufzurufen delete . Clients sollten stattdessen die ReferenceCacheData -Methode genau einmal aufrufen, wenn ein Zeiger auf eine IHttpCacheSpecificData Schnittstelle abgerufen wird, und dann die DereferenceCacheData -Methode aufrufen, wenn auf den IHttpCacheSpecificData Zeiger nicht mehr zugegriffen wird. Sie sollten die ReferenceCacheData Methoden und DereferenceCacheData so früh und so spät wie möglich aufrufen, um sicherzustellen, dass ein IHttpCacheSpecificData Zeiger auf dem Heap gültig ist, wenn darauf zugegriffen und gelöscht wird, wenn er nicht mehr benötigt wird.

Beispiel

Im folgenden Codebeispiel wird eine Klasse namens MySpecificData veranschaulicht, die die IHttpCacheSpecificData Methoden implementiert.

// Create a class that implements the IHttpCacheSpecificData interface.  
class MySpecificData : public IHttpCacheSpecificData  
{  
public:  
    // Create a public constructor.  
    // Set the internal reference count to 1.  
    MySpecificData ()  
    {  
        m_cRefs = 1;  
    }  
  
    // Increment the internal reference count.  
    virtual VOID ReferenceCacheData(VOID)  
    {  
        InterlockedIncrement(&m_cRefs);  
    }  
  
    // Decrement the internal reference count.  
    virtual VOID DereferenceCacheData(VOID)  
    {  
        // Decrement the reference count and delete this  
        // if the count is 0.  
        if (0 == InterlockedDecrement(&m_cRefs))  
        {  
            delete this;  
        }  
    }  
  
    // To do: implement custom MySpecificData implementation.  
  
private:  
    // Create a private destructor called from DereferenceCacheData.  
    virtual ~MySpecificData ()  
    {  
  
    }  
  
    // Create a private reference count member.  
    LONG m_cRefs;  
}  

Anforderungen

type BESCHREIBUNG
Client – IIS 7.0 unter Windows Vista
– IIS 7.5 unter Windows 7
– IIS 8.0 unter Windows 8
– IIS 10.0 unter Windows 10
Server – IIS 7.0 unter Windows Server 2008
– IIS 7.5 unter Windows Server 2008 R2
– IIS 8.0 unter Windows Server 2012
– IIS 8.5 unter Windows Server 2012 R2
– IIS 10.0 unter Windows Server 2016
Produkt – IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0
- IIS Express 7.5, IIS Express 8.0, IIS Express 10.0
Header Httpserv.h

Weitere Informationen

IHttpCacheSpecificData-Schnittstelle
IHttpFileInfo-Schnittstelle
IHttpTokenEntry-Schnittstelle