IHttpCacheSpecificData::D ereferenceCacheData 方法

递减缓存数据的内部引用计数。

语法

virtual VOID DereferenceCacheData(  
   VOID  
) = 0;  

参数

此方法不采用参数。

线程安全性

实现 IHttpCacheSpecificData 接口的类对于 和 ReferenceCacheData 方法是DereferenceCacheData线程安全的。

备注

实现 接口的 IHttpCacheSpecificData 类使用线程安全的引用计数进行内存管理。 IHttpCacheSpecificData构造指针时,成员变量 (private内部引用计数) 设置为 1。 ReferenceCacheData调用 方法时,此引用计数递增 1。 DereferenceCacheData调用 方法时,相同的引用计数将递减 1。 仅当引用计数为 0 时,指针才会 IHttpCacheSpecificData 从堆中删除。 此方案保证在 IHttpCacheSpecificData 指针的最后一个客户端调用 DereferenceCacheData之前不会删除指针。

实现者须知

ReferenceCacheDataDereferenceCacheData 方法实现对于接口应是IHttpCacheSpecificData线程安全的。 实现者应提供 protectedprivate 析构函数,这些函数仅在引用计数为 0 时在内部调用。

对调用者的说明

客户端不应尝试将接口强制转换为 IHttpCacheSpecificData 更具体的类,然后直接调用 delete 。 相反,当检索到接口的ReferenceCacheData指针时,客户端应恰好调用方法一IHttpCacheSpecificData次,然后在不再访问指针时IHttpCacheSpecificData调用 DereferenceCacheData 方法。 应尽早和尽可能晚地调用 ReferenceCacheDataDereferenceCacheData 方法,以确保 IHttpCacheSpecificData 指针在访问堆时有效,并在不再需要时删除该指针。

示例

下面的代码示例演示了一个名为 MySpecificData 的类,该 IHttpCacheSpecificData 类实现了 方法。

// Create a class that implements the IHttpCacheSpecificData interface.  
class MySpecificData : public IHttpCacheSpecificData  
{  
public:  
    // Create a public constructor.  
    // Set the internal reference count to 1.  
    MySpecificData ()  
    {  
        m_cRefs = 1;  
    }  
  
    // Increment the internal reference count.  
    virtual VOID ReferenceCacheData(VOID)  
    {  
        InterlockedIncrement(&m_cRefs);  
    }  
  
    // Decrement the internal reference count.  
    virtual VOID DereferenceCacheData(VOID)  
    {  
        // Decrement the reference count and delete this  
        // if the count is 0.  
        if (0 == InterlockedDecrement(&m_cRefs))  
        {  
            delete this;  
        }  
    }  
  
    // To do: implement custom MySpecificData implementation.  
  
private:  
    // Create a private destructor called from DereferenceCacheData.  
    virtual ~MySpecificData ()  
    {  
  
    }  
  
    // Create a private reference count member.  
    LONG m_cRefs;  
}  

要求

类型 说明
客户端 - 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
Header Httpserv.h

另请参阅

IHttpCacheSpecificData 接口
IHttpFileInfo 接口
IHttpTokenEntry 接口