Compartilhar via


Método IHttpCacheSpecificData::ReferenceCacheData

Incrementa a contagem de referência interna para os dados armazenados em cache.

Sintaxe

virtual VOID ReferenceCacheData(  
   VOID  
) = 0;  

Parâmetros

Este método não aceita parâmetros.

Acesso thread-safe

Classes que implementam a interface IHttpCacheSpecificData são thread safe para os métodos DereferenceCacheData e ReferenceCacheData .

Comentários

As classes que implementam a IHttpCacheSpecificData interface usam a contagem de referência que é thread-safe para gerenciamento de memória. Quando um IHttpCacheSpecificData ponteiro é construído, a contagem de referência interna (uma private variável de membro) é definida como 1. Quando o ReferenceCacheData método é chamado, essa contagem de referência é incrementada em 1. Quando o DereferenceCacheData método é chamado, essa mesma contagem de referência é decrementada por 1. Somente quando a contagem de referência vai para 0 é o IHttpCacheSpecificData ponteiro removido do heap. Esse esquema garante que o IHttpCacheSpecificData ponteiro não será excluído até que o último cliente desse ponteiro chame DereferenceCacheData.

Notas para implementadores

As implementações do ReferenceCacheData método e DereferenceCacheData devem ser thread-safe para uma IHttpCacheSpecificData interface. Os implementadores devem fornecer protected ou private destruidores que são chamados internamente somente quando a contagem de referência for para 0.

Observações para chamadores

Os clientes nunca devem tentar converter um IHttpCacheSpecificData ponteiro para uma classe mais específica e, em seguida, chamar delete diretamente. Em vez disso, os clientes devem chamar o ReferenceCacheData método exatamente uma vez quando um ponteiro para uma IHttpCacheSpecificData interface é recuperado e, em seguida, chamar o DereferenceCacheData método quando o IHttpCacheSpecificData ponteiro não será mais acessado. Você deve chamar os métodos e DereferenceCacheData o ReferenceCacheData mais cedo e o mais tarde possível, respectivamente, para garantir que um IHttpCacheSpecificData ponteiro será válido no heap quando for acessado e excluído quando não for mais necessário.

Exemplo

O exemplo de código a seguir demonstra uma classe chamada MySpecificData que implementa os 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

Type Descrição
Cliente - IIS 7.0 no Windows Vista
- IIS 7.5 no Windows 7
- IIS 8.0 no Windows 8
- IIS 10.0 no Windows 10
Servidor - IIS 7.0 no Windows Server 2008
- IIS 7.5 no Windows Server 2008 R2
- IIS 8.0 no Windows Server 2012
- IIS 8.5 no Windows Server 2012 R2
- IIS 10.0 no Windows Server 2016
Produto - 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
parâmetro Httpserv.h

Consulte Também

IHttpCacheSpecificData Interface