VB.NET プロセス間通信(IPC) 一定時間で自動的に切断されてしまう

(例外:要求されたサービスが見つかりません)

[English]

プロセス間通信(IPC)をデフォルトの設定で実行している場合、一定時間リモート接続がないと自動的に切断されてしまいます。
その状態でクライアントから接続しようとすると下のような例外がスローされます。

要求されたサービスが見つかりません

この問題を回避するには、リモートオブジェクトクラスで MarshalByRefObject の InitializeLifetimeService をオーバーライドしてnullを返すことでインスタンスの有効期間を無効化します。

Namespace IpcSample
    Public Class IpcRemoteObject
        Inherits MarshalByRefObject
    
        Public Property Counter() As Integer
    
        ''' <summary>
        ''' 自動的に切断されるのを回避する
        ''' </summary>
        Public Overrides Function InitializeLifetimeService() As Object
            Return Nothing
        End Function
    
    End Class
End Namespace
使用環境: Visual Studio 2010 .NET Framework 4