IHttpUser::D ereferenceUser (Método)
Disminuye el recuento de referencias internas del usuario.
Sintaxis
virtual VOID DereferenceUser(
VOID
) = 0;
Parámetros
Este método no toma parámetros.
Seguridad para subprocesos
Las clases que implementan la interfaz IHttpUser son seguras para subprocesos para los métodos ReferenceUser y DereferenceUser
.
Comentarios
Las clases que implementan la IHttpUser
interfaz usan el recuento de referencias que es seguro para subprocesos para la administración de memoria. Cuando se construye un IHttpUser
puntero, el recuento de referencias internas (una private
variable miembro) se establece en 1. Cuando se llama al ReferenceUser
método , este recuento de referencias se incrementa en 1. Cuando se llama al DereferenceUser
método , este mismo recuento de referencias se reduce en 1. Solo cuando el recuento de referencias va a 0 es la IHttpUser
interfaz quitada del montón. Este esquema garantiza que el IHttpUser
puntero no se eliminará hasta que el último cliente de ese puntero llame al DereferenceUser
método .
Notas para los implementadores
Las implementaciones de ReferenceUser
método y DereferenceUser
deben ser seguras para subprocesos para un IHttpUser
puntero. Los implementadores solo deben proporcionar destructores privados o protegidos a los que se llama solo cuando el recuento de referencias va a 0.
Notas para autores de la llamada
Los clientes nunca deben intentar convertir una IHttpUser
interfaz a una clase más específica y, a continuación, llamar delete
directamente; en su lugar, los clientes deben llamar al ReferenceUser
método exactamente una vez cuando se recupera un puntero a una IHttpUser
interfaz y, a continuación, llamar al DereferenceUser
método cuando ya no se acceda a la IHttpUser
interfaz. Debe llamar a los ReferenceUser
métodos y DereferenceUser
tan pronto como sea posible, respectivamente, para garantizar que un IHttpUser
puntero será válido en el montón cuando se acceda a él y elimine cuando ya no sea necesario.
Ejemplo
En el ejemplo de código siguiente se muestra una clase denominada MyHttpUser
que implementa la IHttpUser
interfaz .
// 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;
}
Requisitos
Tipo | Descripción |
---|---|
Remoto | - IIS 7.0 en Windows Vista - IIS 7.5 en Windows 7 - IIS 8.0 en Windows 8 - IIS 10.0 en Windows 10 |
Servidor | - IIS 7.0 en Windows Server 2008 - IIS 7.5 en Windows Server 2008 R2 - IIS 8.0 en Windows Server 2012 - IIS 8.5 en Windows Server 2012 R2 - IIS 10.0 en Windows Server 2016 |
Producto | - 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 |
Encabezado | Httpserv.h |