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 DereferenceCacheData
ReferenceCacheData - 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