メッセージと遅延をパラメーターとして受け取るメソッドを持つ.NetCOMサーバーがあります。遅延後、メッセージをクライアントに送り返すイベントを発生させます。
.NetおよびVB6クライアントで動作します。
FoxProでCOMイベントをバインドするには、次のように、foxproでイベントインターフェイスを実装するクラスを作成して接続する必要があります。http: //www.west-wind.com/presentations/dotnetfromVfp/ DotNetFromVfp_EventHandling.asp
私はそのようなクラスを持っています:
DEFINE CLASS ComEventHandler AS session OLEPUBLIC
IMPLEMENTS IComServerEvents IN "PcaTest.ComServer"
* "C:\ComTest\PCATest.tlb"
PROCEDURE IComServerEvents_TimerExpired(message AS STRING) AS VOID
* add user code here
?message
ENDPROC
ENDDEFINE
そしてこれを配線するためのコード:
loMM = CREATEOBJECT("PcaTest.ComServer")
loEvents = CREATEOBJECT("ComEventHandler")
EventHandler(lomm, loevents)
このコードを実行すると、タイプライブラリPcaTest.ComServerが見つかりません。ただし、実装行を次のように変更すると、期待どおりに機能します。
IMPLEMENTS IComServerEvents IN "C:\ComTest\PCATest.tlb"
tlbの場所をハードコーディングできません。
「CREATEOBJECT( "PcaTest.ComServer")」という行は実際には正常に機能します。ComEventHandlerオブジェクトをインスタンス化しようとしない場合、そのCOMオブジェクトがインスタンス化され、そのメソッドを呼び出してそのプロパティにアクセスできます。イベントハンドラークラスは、(ほとんど).tlbをフィードし、progIdをフィードしない場合にのみ機能します。
.NetCOMサーバーはGACに登録されています。/ codebaseを使用した場合と使用しない場合、および/ tlbまたは/tlb:filename.tlbを使用した場合と使用しない場合で、レガスムを試しました。
私はある時点でこれをテストで機能させていたので、そう思われました。現在、これらの結果を複製することはできませんが、機能させたときは/codebaseと/tlb:filename.tlbを使用していました。