Bagikan melalui


Membuat Filter Penerbit

Ada dua metode untuk membuat filter penerbit: menggunakan properti MultiPublisherFilterCLSID dari kelas peristiwa, atau menggunakan IEventControl::SetPublisherFilter.

  • Karena memungkinkan Anda membuat objek peristiwa dengan komponen antrean COM+ layanan, metode yang disukai adalah menggunakan properti MultiPublisherFilterCLSID di kelas peristiwa untuk mengatur filter penerbit. Ini menetapkan satu objek filter untuk semua metode antarmuka peristiwa untuk objek peristiwa. Objek event mengaktifkan filter penerbit ketika objek kelas event dibuat menggunakan CoCreateInstance.
  • Anda juga dapat menggunakan SetPublisherFilter. Namun, jika Anda memilih metode ini, antarmuka tidak dapat diantrekan dan oleh karena itu tidak dapat menggunakan objek peristiwa dengan layanan komponen antrean COM+ antara penerbit dan objek kelas peristiwa. Untuk informasi tambahan tentang menggunakan layanan komponen yang diantrekan dengan PERISTIWA COM+, lihat Menggunakan Peristiwa COM+ dengan Komponen Antrean COM+.

Peristiwa dapat memiliki satu atau beberapa objek filter atau tidak sama sekali. Objek filter penerbit harus mendukung IPublisherFilter atau IMultiInterfacePublisherFilter, tergantung pada apakah Anda memiliki satu antarmuka pemicu atau beberapa antarmuka pemicu pada objek kelas acara. Antarmuka IPublisherFilter dan IMultiInterfacePublisherFilter keduanya menentukan metode Initialize. Metode Inisialisasi dipanggil oleh objek kelas peristiwa segera setelah membuat objek filter.

Peristiwa COM+ mencoba memanggil dua metode pada filter. Pertama, ia memanggil IPublisherFilter::PrepareToFire dan mengoper penunjuk antarmuka IFiringControl ke filter. Kemudian meminta objek filter untuk antarmuka kejadian. Jika filter mendukung antarmuka peristiwa, filter akan memanggil metode di atasnya. Ini menyediakan akses ke parameter penerbit untuk suatu acara. Filter dapat menggunakan parameter ini untuk menentukan langganan mana yang akan diaktifkan.

Memfilter Peristiwa di COM+