Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

IPCでイベントが来ない

タグの編集...

投稿者 ねこまっしぐら   (社会人)   投稿日時 2017/7/24 13:05:41
一つ教えてください
VB.net2005でIPCのリモーティングをしようとしています
重複起動チェックをして最初のプロセスならIPCサーバーになり、2つ目ならクライアントになって起動パラメータを送って終了
サーバーはイベントでそのパラメータを受け取って処理する、というのをやりたいのですがそのイベントが来ません
リモートオブジェクトが呼ばれているのは確認しましたがではこのイベントはどこへ行ってるのでしょう

ライブラリ
Public Class RemoteClass
    Inherits MarshalByRefObject

    Public Event Called(ByVal sender As Object, ByVal e As EventArgs)

    Public Function CallServer() As String
        Dim sender As Object = "Hoge"
        Dim e As EventArgs = New EventArgs
  (実際はこのeでパラメータを送っています)
        RaiseEvent Called(sender, e) <-このイベントはどこに?

        Return "Hoge"
    End Function
End Class


リモートの宣言
Public WithEvents RemoteClass As New IPCSvr.RemoteClass

クライアント部分
If FirstProc = False Then
    Dim IpcClientChannel As IpcClientChannel = New IpcClientChannel
    ChannelServices.RegisterChannel(IpcClientChannel, False)
    RemotingConfiguration.RegisterWellKnownClientType(GetType(RemoteClass), "ipc://IPC_Test/RemoteClass")
    Dim Obj As RemoteClass = New RemoteClass
    Obj.CallServer()
    End
End If

サーバー部分
Dim IPCServerChannel As IpcServerChannel = New IpcServerChannel("IPC_Test")
ChannelServices.RegisterChannel(IPCServerChannel, False)
RemotingConfiguration.RegisterWellKnownServiceType(GetType(RemoteClass), "RemoteClass", WellKnownObjectMode.SingleCall)
IPCServerChannel.StartListening(Nothing)

イベント処理部(これが動かない)
Sub NextProcStart(ByVal sender As Object, ByVal e As EventArgs) Handles RemoteClass.Called
    :
End Sub


投稿者 kiku   (社会人)   投稿日時 2017/7/25 17:20:15
回答が付かないので、コメントしてみます。

IPCの経験はなく、検証もしていない前提です。

わたしだったらまず、
サーバ側で作成したRemoteClassのインスタンスが
クライアント側で取得できているかを確認すると思います。

1.RemoteClassに判定用のプロパティを追加
2.サーバ側でRemoteClassのインスタンスを作成
3.サーバ側でインスタンスの判定用プロパティを書き換える
4.クライアント側でインスタンスを取得
5.クライアント側でインスタンスの判定用プロパテを取得
6.上記3で設定した値と同じであれば正常に取得できている。