Método IHttpUser::D ereferenceUser
Diminui a contagem de referência interna do usuário.
Sintaxe
virtual VOID DereferenceUser(
VOID
) = 0;
Parâmetros
Este método não aceita parâmetros.
Acesso thread-safe
As classes que implementam a interface IHttpUser são thread-safe para os métodos ReferenceUser e DereferenceUser
.
Comentários
As classes que implementam a IHttpUser
interface usam a contagem de referência que é thread-safe para gerenciamento de memória. Quando um IHttpUser
ponteiro é construído, a contagem de referência interna (uma private
variável de membro) é definida como 1. Quando o ReferenceUser
método é chamado, essa contagem de referência é incrementada em 1. Quando o DereferenceUser
método é chamado, essa mesma contagem de referência é decrementada em 1. Somente quando a contagem de referência vai para 0 é a IHttpUser
interface removida do heap. Esse esquema garante que o IHttpUser
ponteiro não será excluído até que o último cliente desse ponteiro chame o DereferenceUser
método .
Notas para implementadores
As implementações do ReferenceUser
método e DereferenceUser
devem ser thread-safe para um IHttpUser
ponteiro. Os implementadores devem fornecer apenas destruidores privados ou protegidos que são chamados somente quando a contagem de referência vai para 0.
Observações para chamadores
Os clientes nunca devem tentar converter uma IHttpUser
interface em uma classe mais específica e, em seguida, chamar delete
diretamente; em vez disso, os clientes devem chamar o ReferenceUser
método exatamente uma vez quando um ponteiro para uma IHttpUser
interface é recuperado e, em seguida, chamar o DereferenceUser
método quando a IHttpUser
interface não será mais acessada. Você deve chamar os métodos e DereferenceUser
o ReferenceUser
mais cedo e o mais tarde possível, respectivamente, para garantir que um IHttpUser
ponteiro será válido no heap quando for acessado e excluído quando não for mais necessário.
Exemplo
O exemplo de código a seguir demonstra uma classe chamada MyHttpUser
que implementa a IHttpUser
interface .
// 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 | Descrição |
---|---|
Cliente | – IIS 7.0 no Windows Vista – IIS 7.5 no Windows 7 – IIS 8.0 no Windows 8 – IIS 10.0 no Windows 10 |
Servidor | – IIS 7.0 no Windows Server 2008 – IIS 7.5 no Windows Server 2008 R2 – IIS 8.0 no Windows Server 2012 – IIS 8.5 no Windows Server 2012 R2 – IIS 10.0 no Windows Server 2016 |
Produto | - 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 |
parâmetro | Httpserv.h |