Bagikan melalui


Metode IHttpUser::D ereferenceUser

Mengurangi jumlah referensi internal pengguna.

Sintaks

virtual VOID DereferenceUser(  
   VOID  
) = 0;  

Parameter

Metode ini tidak memerlukan parameter.

Keamanan Thread

Kelas yang mengimplementasikan antarmuka IHttpUser aman untuk ReferenceUser dan DereferenceUser metode.

Keterangan

Kelas yang mengimplementasikan IHttpUser antarmuka menggunakan penghitungan referensi yang aman untuk manajemen memori utas. Saat pointer IHttpUser dibangun, jumlah referensi internal ( private variabel anggota) diatur ke 1. Ketika metode dipanggil ReferenceUser , jumlah referensi ini bertambah 1. Ketika metode dipanggil DereferenceUser , jumlah referensi yang sama ini dikurangi oleh 1. Hanya ketika jumlah referensi masuk ke 0 adalah antarmuka yang IHttpUser dihapus dari tumpukan. Skema ini menjamin bahwa IHttpUser pointer tidak akan dihapus sampai klien terakhir pointer tersebut DereferenceUser memanggil metode .

Catatan untuk Pelaksana

Implementasi ReferenceUser metode dan DereferenceUser harus aman untuk thread untuk pointer IHttpUser . Pelaksana hanya boleh menyediakan destruktor privat atau terlindungi yang hanya dipanggil ketika jumlah referensi masuk ke 0.

Catatan untuk Penelepon

Klien tidak boleh mencoba mentransmisikan IHttpUser antarmuka ke kelas yang lebih spesifik dan kemudian memanggil delete secara langsung; klien harus memanggil ReferenceUser metode tepat sekali ketika penunjuk ke IHttpUser antarmuka diambil, dan kemudian memanggil DereferenceUser metode ketika IHttpUser antarmuka tidak akan lagi diakses. Anda harus memanggil ReferenceUser metode dan DereferenceUser sedini mungkin dan selambat mungkin, masing-masing, untuk menjamin bahwa penunjuk IHttpUser akan valid pada tumpukan ketika diakses dan dihapus ketika tidak lagi diperlukan.

Contoh

Contoh kode berikut menunjukkan kelas yang disebut MyHttpUser yang mengimplementasikan IHttpUser antarmuka.

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

Persyaratan

Jenis Deskripsi
Klien - IIS 7.0 di Windows Vista
- IIS 7.5 di Windows 7
- IIS 8.0 di Windows 8
- IIS 10.0 pada Windows 10
Server - IIS 7.0 di Windows Server 2008
- IIS 7.5 di Windows Server 2008 R2
- IIS 8.0 di Windows Server 2012
- IIS 8.5 di Windows Server 2012 R2
- IIS 10.0 di Windows Server 2016
Produk - 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

Lihat juga

Antarmuka IHttpUser