共用方式為


IHttpUser::D ereferenceUser 方法

遞減使用者內部參考計數。

語法

virtual VOID DereferenceUser(  
   VOID  
) = 0;  

參數

此方法不會採用任何參數。

執行緒安全性

實作 IHttpUser 介面的類別是 ReferenceUserDereferenceUser 方法的執行緒安全。

備註

實作 介面的 IHttpUser 類別會使用執行緒安全記憶體管理的參考計數。 IHttpUser建構指標時, (成員變數) 的內部參考計數 private 設為 1。 ReferenceUser呼叫 方法時,這個參考計數會遞增 1。 DereferenceUser呼叫 方法時,這個相同的參考計數會遞減 1。 只有當參考計數移至 0 時,才會 IHttpUser 從堆積中移除介面。 此配置可確保 IHttpUser 在該指標的最後一個用戶端呼叫 DereferenceUser 方法之前,不會刪除指標。

實作者的注意事項

ReferenceUserDereferenceUser 方法實作應該是指標的 IHttpUser 執行緒安全。 實作者應該只提供只有在參考計數變成 0 時才會呼叫的私人或受保護的解構函式。

來電者的附注

用戶端不應該嘗試將介面轉換成 IHttpUser 更特定的類別,然後直接呼叫 delete ;用戶端應該改為在擷取介面的指標 IHttpUser 時,只呼叫 ReferenceUser 方法一次,然後在不再存取介面時 IHttpUser 呼叫 DereferenceUser 方法。 您應該分別儘快和延遲呼叫 ReferenceUserDereferenceUser 方法,以確保 IHttpUser 在不再需要時,指標在堆積上有效。

範例

下列程式碼範例示範實作 介面的 IHttpUser 類別 MyHttpUser

// 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;  
}  

規格需求

類型 描述
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

另請參閱

IHttpUser 介面