Metodo IHttpCacheSpecificData::ReferenceCacheData
Incrementa il conteggio dei riferimenti interni per i dati memorizzati nella cache.
Sintassi
virtual VOID ReferenceCacheData(
VOID
) = 0;
Parametri
Questo metodo non accetta parametri.
Thread safety
Le classi che implementano l'interfaccia IHttpCacheSpecificData sono thread-safe per i metodi DereferenceCacheData e ReferenceCacheData
.
Commenti
Le classi che implementano l'interfaccia usano il IHttpCacheSpecificData
conteggio dei riferimenti thread-safe per la gestione della memoria. Quando viene costruito un IHttpCacheSpecificData
puntatore, il conteggio dei riferimenti interni (una private
variabile membro) è impostato su 1. Quando viene chiamato il ReferenceCacheData
metodo , questo conteggio dei riferimenti viene incrementato di 1. Quando viene chiamato il metodo , lo DereferenceCacheData
stesso conteggio dei riferimenti viene decrementato di 1. Solo quando il conteggio dei riferimenti passa a 0 è il IHttpCacheSpecificData
puntatore rimosso dall'heap. Questo schema garantisce che il IHttpCacheSpecificData
puntatore non venga eliminato fino all'ultimo client di tale puntatore chiama DereferenceCacheData
.
Note per gli implementatori
Le implementazioni del ReferenceCacheData
metodo e DereferenceCacheData
devono essere thread-safe per un'interfaccia IHttpCacheSpecificData
. Gli implementatori devono fornire protected
o private
distruttori chiamati internamente 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 IHttpCacheSpecificData
puntatore a una classe più specifica e quindi chiamare delete
direttamente. I client devono invece chiamare il ReferenceCacheData
metodo esattamente una volta quando viene recuperato un puntatore a un'interfaccia IHttpCacheSpecificData
e quindi chiamare il DereferenceCacheData
metodo quando il IHttpCacheSpecificData
puntatore non sarà più accessibile. È consigliabile chiamare i ReferenceCacheData
metodi e DereferenceCacheData
il più presto possibile, rispettivamente, per garantire che un IHttpCacheSpecificData
puntatore sia valido nell'heap quando viene eseguito l'accesso e eliminato quando non è più necessario.
Esempio
Nell'esempio di codice seguente viene illustrata una classe denominata MySpecificData
che implementa i IHttpCacheSpecificData
metodi .
// 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;
}
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 |