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 menyusun objek peristiwa dengan layanan komponen antrean COM+, 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 peristiwa mengaktifkan filter penerbit saat objek kelas peristiwa 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 tembak atau beberapa antarmuka menembak pada objek kelas peristiwa. Antarmuka IPublisherFilter dan IMultiInterfacePublisherFilter keduanya menentukan metode Inisialisasi . Metode Inisialisasi dipanggil oleh objek kelas peristiwa segera setelah membuat objek filter.

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

Memfilter Peristiwa di COM+