Compartir a través de


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)