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