Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Decrementa il conteggio dei riferimenti interni dell'utente.
Sintassi
virtual VOID DereferenceUser(
VOID
) = 0;
Parametri
Questo metodo non accetta parametri.
Thread safety
Le classi che implementano l'interfaccia IHttpUser sono thread safe per i metodi ReferenceUser e DereferenceUser .
Commenti
Le classi che implementano l'interfaccia usano il IHttpUser conteggio dei riferimenti che è thread safe per la gestione della memoria. Quando viene costruito un puntatore, il conteggio dei riferimenti interni (variabile IHttpUserprivate membro) è impostato su 1. Quando viene chiamato il metodo, questo ReferenceUser conteggio di riferimenti viene incrementato da 1. Quando viene chiamato il metodo, lo DereferenceUser stesso numero di riferimenti viene decretato da 1. Solo quando il conteggio dei riferimenti passa a 0 è l'interfaccia IHttpUser rimossa dall'heap. Questo schema garantisce che il IHttpUser puntatore non verrà eliminato fino all'ultimo client di tale puntatore chiama il DereferenceUser metodo.
Note per gli implementatori
Le ReferenceUser implementazioni del metodo e DereferenceUser devono essere thread safe per un IHttpUser puntatore. Gli implementatori devono fornire solo distruttori privati o protetti chiamati solo quando il conteggio dei riferimenti passa a 0.
Note per i chiamanti
I client non devono mai tentare di eseguire il cast di un'interfaccia IHttpUser in una classe più specifica e quindi chiamare delete direttamente il metodo. I client devono invece chiamare il metodo esattamente una volta quando viene recuperato un puntatore a un'interfaccia IHttpUser e quindi chiamare il ReferenceUserDereferenceUser metodo quando l'interfaccia IHttpUser non sarà più accessibile. È consigliabile chiamare i ReferenceUser metodi e DereferenceUser il più presto possibile, rispettivamente, per garantire che un IHttpUser puntatore sia valido nell'heap quando viene eseguito l'accesso ed eliminato quando non è più necessario.
Esempio
Nell'esempio di codice seguente viene illustrata una classe denominata MyHttpUser che implementa l'interfaccia 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;
}
Requisiti
| Tipo | Descrizione |
|---|---|
| Client | - IIS 7.0 in Windows Vista - IIS 7.5 in Windows 7 - IIS 8.0 in Windows 8 - IIS 10.0 in Windows 10 |
| Server | - IIS 7.0 in Windows Server 2008 - IIS 7.5 in Windows Server 2008 R2 - IIS 8.0 in Windows Server 2012 - IIS 8.5 in Windows Server 2012 R2 - IIS 10.0 in Windows Server 2016 |
| Prodotto | - 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 |
| Intestazione | Httpserv.h |