IHttpCacheSpecificData::D ereferenceCacheData (Método)
Disminuye el recuento de referencias internos para los datos almacenados en caché.
Sintaxis
virtual VOID DereferenceCacheData(
VOID
) = 0;
Parámetros
Este método no toma parámetros.
Seguridad para subprocesos
Las clases que implementan la interfaz IHttpCacheSpecificData son seguras para subprocesos para los DereferenceCacheData
métodos y ReferenceCacheData .
Comentarios
Las clases que implementan la interfaz usan el IHttpCacheSpecificData
recuento de referencias que es seguro para subprocesos para la administración de memoria. Cuando se construye un IHttpCacheSpecificData
puntero, el recuento de referencias internas (una private
variable miembro) se establece en 1. Cuando se llama al ReferenceCacheData
método , este recuento de referencias se incrementa en 1. Cuando se llama al DereferenceCacheData
método , este mismo recuento de referencias se disminuye en 1. Solo cuando el recuento de referencias va a 0 es el IHttpCacheSpecificData
puntero quitado del montón. Este esquema garantiza que el IHttpCacheSpecificData
puntero no se eliminará hasta que el último cliente de ese puntero llame a DereferenceCacheData
.
Notas para los implementadores
Las ReferenceCacheData
implementaciones de método y DereferenceCacheData
deben ser seguras para subprocesos para una IHttpCacheSpecificData
interfaz. Los implementadores deben proporcionar protected
o private
destructores a los que se llama internamente solo cuando el recuento de referencias va a 0.
Notas para autores de la llamada
Los clientes nunca deben intentar convertir una IHttpCacheSpecificData
interfaz a una clase más específica y, a continuación, llamar delete
directamente. En su lugar, los clientes deben llamar al ReferenceCacheData
método exactamente una vez cuando se recupera un puntero a una IHttpCacheSpecificData
interfaz y, a continuación, llamar al DereferenceCacheData
método cuando ya no se tenga acceso al IHttpCacheSpecificData
puntero. Debe llamar a los ReferenceCacheData
métodos y DereferenceCacheData
tan pronto como sea posible, respectivamente, para garantizar que un IHttpCacheSpecificData
puntero será válido en el montón cuando se tenga acceso a él y se elimine cuando ya no sea necesario.
Ejemplo
En el ejemplo de código siguiente se muestra una clase denominada MySpecificData
que implementa los IHttpCacheSpecificData
métodos.
// 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;
}
Requisitos
Tipo | Descripción |
---|---|
Remoto | - IIS 7.0 en Windows Vista - IIS 7.5 en Windows 7 - IIS 8.0 en Windows 8 - IIS 10.0 en Windows 10 |
Servidor | - IIS 7.0 en Windows Server 2008 - IIS 7.5 en Windows Server 2008 R2 - IIS 8.0 en Windows Server 2012 - IIS 8.5 en Windows Server 2012 R2 - IIS 10.0 en Windows Server 2016 |
Producto | - 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 |
Encabezado | Httpserv.h |
Consulte también
IHttpCacheSpecificData (interfaz)
IHttpFileInfo (interfaz)
IHttpTokenEntry (Interfaz)