IDispensedHttpModuleContextContainer::ReleaseContainer-Methode
Löscht den Kontextcontainer, wenn er ausgegeben wird.
Syntax
virtual VOID ReleaseContainer(
VOID
) = 0;
Parameter
Diese Methode nimmt zwei Parameter entgegen.
Threadsicherheit
Die ReleaseContainer
Methode ist nicht threadsicher für Implementierer, die verteilt werden.
Bemerkungen
Das Verhalten dieser Methode hängt von der Implementierung ab. Sie sollten die folgenden Informationen als Leitfaden verwenden, aber möglicherweise nicht in allen Szenarien richtig:
Die meisten Implementierer deklarieren einen privaten
Boolean
Wert namensdispensed
. Der Standardwert istfalse
, und das Standardverhalten ist niedispensed
auftrue
festgelegt. Wenn die Implementierung jedoch auf festgelegtdispensed
hat, wennReleaseContainer
aufgerufen wird, ruft der IDispensedHttpModuleContextContainer-Zeigerdelete
sich selbsttrue
auf.ReleaseContainer
Andernfalls ist ein leerer Vorgang.Wenn
delete
aufgerufen wird,IDispensedHttpModuleContextContainer
listet das interne Array von IHttpStoredContext-Zeigern auf und ruft die IHttpStoredContext::CleanupStoredContext-Methode für alle Zeiger auf, die zuvor mithilfe der IHttpModuleContextContainer::SetModuleContext-Methode hinzugefügt wurden. Der Kontextcontainer entsorgt dann den Arrayspeicher auf dem Heap und legt dieses Array auf NULL fest.
Beispiel
Das folgende Beispiel zeigt eine benutzerdefinierte Klasse namens MyContainer
, die die IDispensedHttpModuleContextContainer
Schnittstelle implementiert. Außerdem wird eine benutzerdefinierte Klasse mit dem Namen MyClass
angezeigt, die eine Methode mit dem Namen GetModuleContextContainer
implementiert. MyClass
verwaltet einen MyContainer
Zeiger während der Lebensdauer eines MyClass
Zeigers.
// 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;
};
Anforderungen
type | BESCHREIBUNG |
---|---|
Client | – IIS 7.0 unter Windows Vista – IIS 7.5 unter Windows 7 – IIS 8.0 unter Windows 8 – IIS 10.0 auf Windows 10 |
Server | – IIS 7.0 unter Windows Server 2008 – IIS 7.5 unter Windows Server 2008 R2 – IIS 8.0 unter Windows Server 2012 – IIS 8.5 unter Windows Server 2012 R2 – IIS 10.0 auf Windows Server 2016 |
Produkt | – 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 |
Header | Httpserv.h |
Weitere Informationen
IDispensedHttpModuleContextContainer-Schnittstelle
IHttpApplication::GetModuleContextContainer-Methode
IHttpConnection::GetModuleContextContainer-Methode
IHttpContext::GetModuleContextContainer-Methode
IHttpFileInfo::GetModuleContextContainer-Methode
IHttpModuleContextContainer-Schnittstelle
IHttpSite::GetModuleContextContainer-Methode
IHttpUrlInfo::GetModuleContextContainer-Methode
IMetadataInfo::GetModuleContextContainer-Methode