Partager via


IHttpCacheSpecificData::D ereferenceCacheData, méthode

Décrémente le nombre de références internes pour les données mises en cache.

Syntaxe

virtual VOID DereferenceCacheData(  
   VOID  
) = 0;  

Paramètres

Cette méthode ne prend aucun paramètre.

Cohérence de thread

Les classes qui implémentent l’interface IHttpCacheSpecificData sont thread safe pour les DereferenceCacheData méthodes ReferenceCacheData et.

Remarques

Les classes qui implémentent l’interface utilisent le IHttpCacheSpecificData comptage de références qui est thread safe pour la gestion de la mémoire. Lorsqu’un IHttpCacheSpecificData pointeur est construit, le nombre de références internes (variable private membre) est défini sur 1. Lorsque la ReferenceCacheData méthode est appelée, ce nombre de références est incrémenté de 1. Lorsque la DereferenceCacheData méthode est appelée, ce même nombre de références est décrémenté par 1. Ce n’est que lorsque le nombre de références passe à 0 que le IHttpCacheSpecificData pointeur est supprimé du tas. Ce schéma garantit que le IHttpCacheSpecificData pointeur n’est pas supprimé tant que le dernier client de ce pointeur n’appelle DereferenceCacheDatapas .

Remarques pour les implémenteurs

Les ReferenceCacheData implémentations de la méthode et DereferenceCacheData doivent être thread safe pour une IHttpCacheSpecificData interface. Les implémenteurs doivent fournir ou private des protected destructeurs qui sont appelés en interne uniquement lorsque le nombre de références passe à 0.

Remarques pour les appelants

Les clients ne doivent jamais tenter de caster une IHttpCacheSpecificData interface en une classe plus spécifique, puis appeler delete directement. Au lieu de cela, les clients doivent appeler la ReferenceCacheData méthode exactement une fois lorsqu’un pointeur vers une IHttpCacheSpecificData interface est récupéré, puis appeler la DereferenceCacheData méthode lorsque le IHttpCacheSpecificData pointeur n’est plus accessible. Vous devez appeler les méthodes et DereferenceCacheData le ReferenceCacheData plus tôt possible, respectivement, pour garantir la validité d’un IHttpCacheSpecificData pointeur sur le tas lorsqu’il est accessible et supprimé lorsqu’il n’est plus nécessaire.

Exemple

L’exemple de code suivant illustre une classe appelée MySpecificData qui implémente les IHttpCacheSpecificData méthodes.

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

Spécifications

Type Description
Client - IIS 7.0 sur Windows Vista
- IIS 7.5 sur Windows 7
- IIS 8.0 sur Windows 8
- IIS 10.0 sur Windows 10
Serveur - IIS 7.0 sur Windows Server 2008
- IIS 7.5 sur Windows Server 2008 R2
- IIS 8.0 sur Windows Server 2012
- IIS 8.5 sur Windows Server 2012 R2
- IIS 10.0 sur Windows Server 2016
Produit - 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
En-tête Httpserv.h

Voir aussi

IHttpCacheSpecificData, interface
IHttpFileInfo, interface
IHttpTokenEntry, interface