IDispensedHttpModuleCoNtextContainer::ReleaseContainer 方法
如果已分配內容容器,則會刪除它。
語法
virtual VOID ReleaseContainer(
VOID
) = 0;
參數
此方法不會採用任何參數。
執行緒安全性
對於已分配的實作者而言,此方法 ReleaseContainer
不是安全線程。
備註
這個方法的行為取決於 實作。 您應該使用下列資訊作為指導方針,但在所有案例中可能都不正確:
大部分的實作者都會宣告名為
dispensed
的私用Boolean
值;預設值為false
,而預設行為是dispensed
永遠不會設定為true
。 不過,如果實作已設定dispensed
為true
,則呼叫 時ReleaseContainer
, IDispensedHttpModuleCoNtextContainer 指標本身會呼叫delete
。 否則為ReleaseContainer
空的作業。如果
delete
呼叫 ,IDispensedHttpModuleContextContainer
請在先前使用IHttpModuleCoNtextContainer::SetModuleCoNtext方法新增的任何指標上,列舉其IHttpStoredCoNtext指標的內部陣列,並呼叫IHttpStoredCoNtext::CleanupStoredCoNtext方法。 內容容器接著會處置堆積上的陣列記憶體,並將該陣列設定為 Null。
範例
下列範例示範名為 MyContainer
的自訂類別,該類別會實作 IDispensedHttpModuleContextContainer
介面。 它也會顯示名為 MyClass
的自訂類別,該類別會實作名為 GetModuleContextContainer
的方法。 MyClass
會在 MyContainer
指標的 MyClass
存留期期間管理指標。
// 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;
};
規格需求
類型 | 描述 |
---|---|
Client | - Windows Vista 上的 IIS 7.0 - Windows 7 上的 IIS 7.5 - Windows 8 上的 IIS 8.0 - Windows 10上的 IIS 10.0 |
伺服器 | - Windows Server 2008 上的 IIS 7.0 - Windows Server 2008 R2 上的 IIS 7.5 - Windows Server 2012 上的 IIS 8.0 - Windows Server 2012 R2 上的 IIS 8.5 - Windows Server 2016上的 IIS 10.0 |
產品 | - 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 |
標頭 | Httpserv.h |
另請參閱
IDispensedHttpModuleCoNtextContainer 介面
IHttpApplication::GetModuleCoNtextContainer 方法
IHttpConnection::GetModuleCoNtextContainer 方法
IHttpCoNtext::GetModuleCoNtextContainer 方法
IHttpFileInfo::GetModuleCoNtextContainer 方法
IHttpModuleCoNtextContainer 介面
IHttpSite::GetModuleCoNtextContainer 方法
IHttpUrlInfo::GetModuleCoNtextContainer 方法
IMetadataInfo::GetModuleCoNtextContainer 方法