Partager via


IHttpCacheSpecificData::ReferenceCacheData, méthode

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

Syntaxe

virtual VOID ReferenceCacheData(  
   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 méthodes DereferenceCacheData et ReferenceCacheData .

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 (une private variable 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é de 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 méthode et DereferenceCacheData doivent être thread-safe pour une IHttpCacheSpecificData interface. Les implémenteurs doivent fournir des protectedprivate 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 convertir un IHttpCacheSpecificData pointeur vers une classe plus spécifique, puis d’appeler delete directement. Les clients doivent plutôt 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 et le plus tard possible, respectivement, pour garantir qu’un IHttpCacheSpecificData pointeur sera valide sur le tas lorsqu’il sera 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