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

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

[English]

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

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

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

using System;
namespace IpcSample
{
    public class IpcRemoteObject : MarshalByRefObject
    {
        public int Counter { getset; }
     
        /// <summary>
        /// 自動的に切断されるのを回避する
        /// </summary>
        public override object InitializeLifetimeService()
        {
            return null;
        }
    }
}
使用環境: Visual Studio 2010 .NET Framework 4

C# メニューリスト