昨日の続き。昨日の帰りの電車の中で「Microsoft .NET リモーティング: 技術概要 」を印刷して呼んでてなんかピンとこなかったんだが、まあ一通り作ってみる(半分サンプルをコピペしただけなのだが)と結構頭に入るものだね。ちなみに参考にしたのはkatamari soulwareのコード。最初はなんで一定時間で接続が切れるのかわからなかったんだけど、改めて技術概要を読むとアクティベーションの側とかオブジェクトモードとか結構すんなり理解できる。つまり問題だったのはこれがクライアント側でアクティベートしてたのが原因でリース切れだったのだなとか。そんな感じでいろいろ反省してやり直したのが以下。サーバ側だけ。わざわざ書くようなものじゃないと思うんだけど、C#のサンプルコードが豊富にあったわりにVBのサンプルコードが見つからなくて苦労したので一応。あと、実はRegisterWellKnownServiceTypeメソッドがどこのクラスにあるのかわかんなくて無駄な時間をかけたりとか。まあこのコード自体はうちで作ったのだから(それを元に会社でちゃんとしたのを作った)別にどうにかしたって問題ないよね。

Imports (略)
Public Class Class1
    Public Shared Sub main()

        Dim channel As TcpChannel
        channel = New TcpChannel(8085)
        ChannelServices.RegisterChannel(channel, False)

        RemotingConfiguration.RegisterWellKnownServiceType(GetType(RemoteClass), "hoge", WellKnownObjectMode.SingleCall)

        Dim mutex As Object = New Object
        SyncLock mutex
            System.Threading.Monitor.Wait(mutex)
        End SyncLock

    End Sub
End Class

とまあそんなことをやってたら一日がつぶれてしまった感じかな。そろそろ今月の残業時間も危ないんだ。今月は0.1時間を争うレベルになりそうだな。あれ、ひょっとして3ヶ月連続で俺が部内で稼働時間トップなんじゃね。