Bagikan melalui


Metode IHttpUser::ReferenceUser

Menaikkan jumlah referensi internal pengguna.

Sintaks

virtual VOID ReferenceUser(  
   VOID  
) = 0;  

Parameter

Metode ini tidak memerlukan parameter.

Keamanan Thread

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

Keterangan

Kelas yang mengimplementasikan IHttpUser antarmuka menggunakan penghitungan referensi yang aman untuk manajemen memori. IHttpUser Saat pointer dibangun, jumlah referensi internal (privatevariabel 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. Antarmuka IHttpUser dihapus dari tumpukan hanya ketika jumlah referensi masuk ke 0. Skema ini menjamin bahwa IHttpUser pointer tidak akan dihapus sampai klien terakhir dari pointer tersebut DereferenceUser memanggil metode .

Catatan untuk Pelaksana

Implementasi ReferenceUser metode dan DereferenceUser harus aman untuk thread untuk pointer IHttpUser . Pelaksana hanya boleh menyediakan private atau protected destruktor yang dipanggil hanya 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 langsung; klien harus memanggil ReferenceUser metode tepat sekali ketika pointer 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 IHttpUser pointer 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()  
    {  
  
    }  
  
    // Create a 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