Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Décrémente le nombre de références internes de l’utilisateur.
Syntaxe
virtual VOID DereferenceUser(
VOID
) = 0;
Paramètres
Cette méthode ne prend aucun paramètre.
Cohérence de thread
Les classes qui implémentent l’interface IHttpUser sont thread-safe pour les méthodes ReferenceUser et DereferenceUser .
Remarques
Les classes qui implémentent l’interface utilisent le IHttpUser comptage de références qui est thread-safe pour la gestion de la mémoire. Lorsqu’un IHttpUser pointeur est construit, le nombre de références internes (une private variable membre) est défini sur 1. Lorsque la ReferenceUser méthode est appelée, ce nombre de références est incrémenté de 1. Lorsque la DereferenceUser 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 l’interface IHttpUser est supprimée du tas. Ce schéma garantit que le IHttpUser pointeur n’est pas supprimé tant que le dernier client de ce pointeur n’appelle pas la DereferenceUser méthode .
Remarques pour les implémenteurs
Les ReferenceUser implémentations de méthode et DereferenceUser doivent être thread-safe pour un IHttpUser pointeur. Les implémenteurs doivent fournir uniquement des destructeurs privés ou protégés qui sont appelés uniquement lorsque le nombre de références passe à 0.
Remarques pour les appelants
Les clients ne doivent jamais tenter de convertir une IHttpUser interface en une classe plus spécifique, puis d’appeler delete directement ; les clients doivent appeler la ReferenceUser méthode exactement une fois lorsqu’un pointeur vers une IHttpUser interface est récupéré, puis appeler la DereferenceUser méthode lorsque l’interface IHttpUser ne sera plus accessible. Vous devez appeler les méthodes et DereferenceUser le ReferenceUser plus tôt et le plus tard possible, respectivement, pour garantir qu’un IHttpUser 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 MyHttpUser qui implémente l’interface IHttpUser .
// Create a class that implements the IHttpUser interface.
class MyHttpUser : public IHttpUser
{
public:
// Create a public constructor.
// Set the internal reference count to 1.
MyHttpUser()
{
m_cRefs = 1;
}
// Increment the internal reference count.
virtual VOID ReferenceUser(VOID)
{
InterlockedIncrement(&m_cRefs);
}
// Decrement the internal reference count.
virtual VOID DereferenceUser(VOID)
{
// Decrement the reference count and call delete this
// if the count is 0.
if (0 == InterlockedDecrement(&m_cRefs))
{
delete this;
}
}
private:
// Create a private destructor called from DereferenceUser.
virtual ~MyHttpUser()
{
}
//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 |