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 DereferenceCacheData
pas .
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