Método IDispensedHttpModuleContextContainer::ReleaseContainer
Excluirá o contêiner de contexto se ele for dispensado.
Sintaxe
virtual VOID ReleaseContainer(
VOID
) = 0;
Parâmetros
Este método não aceita parâmetros.
Acesso thread-safe
O ReleaseContainer
método não é thread-safe para implementadores que são dispensados.
Comentários
O comportamento desse método depende da implementação. Você deve usar as seguintes informações como uma diretriz, mas elas podem não estar corretas em todos os cenários:
A maioria dos implementadores declara um valor privado
Boolean
chamadodispensed
; o valor padrão éfalse
e o comportamento padrão é quedispensed
nunca é definidotrue
como . No entanto, se a implementação tiver definidodispensed
true
como , quandoReleaseContainer
for chamada, o ponteiro IDispensedHttpModuleContextContainer chamarádelete
em si mesmo. Caso contrário,ReleaseContainer
será uma operação vazia.Se
delete
for chamado,IDispensedHttpModuleContextContainer
enumera sua matriz interna de ponteiros IHttpStoredContext e chama o método IHttpStoredContext::CleanupStoredContext em quaisquer ponteiros que foram adicionados anteriormente usando o método IHttpModuleContextContainer::SetModuleContext . Em seguida, o contêiner de contexto descarta a memória da matriz no heap e define essa matriz como NULL.
Exemplo
O exemplo a seguir mostra uma classe personalizada chamada MyContainer
que implementa a IDispensedHttpModuleContextContainer
interface . Ele também mostra uma classe personalizada chamada MyClass
que implementa um método chamado GetModuleContextContainer
. MyClass
gerencia um MyContainer
ponteiro durante o tempo de vida de um MyClass
ponteiro.
// The MyContainer class implements the
// IDispensedHttpModuleContextContainer interface.
class MyContainer : public IDispensedHttpModuleContextContainer
{
public:
// The MyContainer method is the public
// constructor for the MyContainer class.
// Make this method protected if the
// MyContainer class is abstract.
// dispensed: true if the container should
// call delete this when the ReleaseContainer
// method is called.
MyContainer(bool dispensed = false)
: m_dispensed(dispensed)
{
}
// The ReleaseContainer method
// calls delete this if this container
// is dispensed.
virtual VOID ReleaseContainer(VOID)
{
if (m_dispensed)
{
delete this;
}
}
// Implement additional
// IDispensedHttpModuleContextContainer
// pure virtual methods if this class
// is not abstract.
private:
// The MyContainer method is the private
// destructor for the MyContainer class.
// Make this method protected and virtual
// if the MyContainer class expects
// to be a class of derivation. This method
// should not be public because
// IDispensedHttpModuleContextContainer pointers
// should be disposed externally only by
// calling the ReleaseContainer method.
~MyContainer()
{
}
// Specify a Boolean value for dispensing.
bool m_dispensed;
};
// Create the MyClass class.
class MyClass
{
public:
// The MyClass method is the public
// constructor for the MyClass class.
MyClass()
{
m_container = new MyContainer;
}
// The MyClass method is the
// public virtual destructor
// for the MyClass class. This destructor
// calls ReleaseContainer on the internal
// IDispensedHttpModuleContextContainer
// pointer and sets that pointer to NULL.
virtual ~MyClass()
{
m_container->ReleaseContainer();
m_container = NULL;
}
// The GetModuleContextContainer method
// returns an IHttpModuleContextContainer
// pointer.
// return: a static upcast
// IDispensedHttpModuleContextContainer.
virtual IHttpModuleContextContainer*
GetModuleContextContainer(VOID)
{
return static_cast<IHttpModuleContextContainer*>
(m_container);
}
// Implement additional IHttpUrlInfo
// pure virtual methods if this class
// is not abstract.
private:
// Specify a private
// IDispensedHttpModuleContextContainer
// pointer.
IDispensedHttpModuleContextContainer* m_container;
};
Requisitos
Type | 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 |
Consulte Também
IDispensedHttpModuleContextContainer Interface
Método IHttpApplication::GetModuleContextContainer
Método IHttpConnection::GetModuleContextContainer
Método IHttpContext::GetModuleContextContainer
Método IHttpFileInfo::GetModuleContextContainer
IHttpModuleContextContainer Interface
Método IHttpSite::GetModuleContextContainer
Método IHttpUrlInfo::GetModuleContextContainer
Método IMetadataInfo::GetModuleContextContainer