2

イベントを公開する .Net アセンブリを作成しました。VB6 からのイベントは問題なく消費できます。アセンブリを PowerBuilder 開発者に配布したところ、ActiveX でない場合、COM オブジェクトからのイベントを処理できないと彼は言います。

ActiveX イベントは通常の COM イベントとは異なりますか? PowerBuilder がイベントを「見る」ことができるように、追加のインターフェイスを実装する必要がありますか?

前もって感謝します。

4

1 に答える 1

1

両方のイベントは、接続ポイントIConnectionPointおよび友人)を介して実装されます。ActiveXコントロールは通常、特定の追加の制約を使用して接続ポイントを実装します。

  • コントロール自体は「Apartment」スレッドモデルであり、イベントは、コントロールが作成されたSTAスレッドから発生します。
  • 発信イベントインターフェイスはdispinterfaceですが、宣言にメソッドとプロパティが含まれている場合でも、コントロールはIDispatch::Invoke実際のイベントを配信するために呼び出します。
  • 発信インターフェイス宣言はタイプライブラリで利用できます。これは、ActiveXコントロールコンシューマが既存のイベントを検出する方法です。
  • コントロールは、タイプライブラリ上のコクラスのメインインターフェイスとイベントインターフェイスを一覧表示しますIProvideClassInfo2。また、この情報を提供するための実装もあります。

PowerBuilderまたは別のCOMイベントコンシューマが上記の1つ以上の項目に依存している場合、一部のイベントソースでのみ機能し、他のイベントソースでは機能しません。

于 2012-08-29T09:10:31.263 に答える