Condividi tramite


Metodo IHttpCacheSpecificData::ReferenceCacheData

Incrementa il conteggio dei riferimenti interni per i dati memorizzati nella cache.

Sintassi

virtual VOID ReferenceCacheData(  
   VOID  
) = 0;  

Parametri

Questo metodo non accetta parametri.

Thread safety

Le classi che implementano l'interfaccia IHttpCacheSpecificData sono thread-safe per i metodi DereferenceCacheData e ReferenceCacheData .

Commenti

Le classi che implementano l'interfaccia usano il IHttpCacheSpecificData conteggio dei riferimenti thread-safe per la gestione della memoria. Quando viene costruito un IHttpCacheSpecificData puntatore, il conteggio dei riferimenti interni (una private variabile membro) è impostato su 1. Quando viene chiamato il ReferenceCacheData metodo , questo conteggio dei riferimenti viene incrementato di 1. Quando viene chiamato il metodo , lo DereferenceCacheData stesso conteggio dei riferimenti viene decrementato di 1. Solo quando il conteggio dei riferimenti passa a 0 è il IHttpCacheSpecificData puntatore rimosso dall'heap. Questo schema garantisce che il IHttpCacheSpecificData puntatore non venga eliminato fino all'ultimo client di tale puntatore chiama DereferenceCacheData.

Note per gli implementatori

Le implementazioni del ReferenceCacheData metodo e DereferenceCacheData devono essere thread-safe per un'interfaccia IHttpCacheSpecificData . Gli implementatori devono fornire protected o private distruttori chiamati internamente solo quando il conteggio dei riferimenti passa a 0.

Note per i chiamanti

I client non devono mai tentare di eseguire il cast di un IHttpCacheSpecificData puntatore a una classe più specifica e quindi chiamare delete direttamente. I client devono invece chiamare il ReferenceCacheData metodo esattamente una volta quando viene recuperato un puntatore a un'interfaccia IHttpCacheSpecificData e quindi chiamare il DereferenceCacheData metodo quando il IHttpCacheSpecificData puntatore non sarà più accessibile. È consigliabile chiamare i ReferenceCacheData metodi e DereferenceCacheData il più presto possibile, rispettivamente, per garantire che un IHttpCacheSpecificData puntatore sia valido nell'heap quando viene eseguito l'accesso e eliminato quando non è più necessario.

Esempio

Nell'esempio di codice seguente viene illustrata una classe denominata MySpecificData che implementa i IHttpCacheSpecificData metodi .

// 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;  
}  

Requisiti

Tipo Descrizione
Client - IIS 7.0 in Windows Vista
- IIS 7.5 in Windows 7
- IIS 8.0 in Windows 8
- IIS 10.0 in Windows 10
Server - IIS 7.0 in Windows Server 2008
- IIS 7.5 in Windows Server 2008 R2
- IIS 8.0 in Windows Server 2012
- IIS 8.5 in Windows Server 2012 R2
- IIS 10.0 in Windows Server 2016
Prodotto - 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
Intestazione Httpserv.h

Vedere anche

Interfaccia IHttpCacheSpecificData