リモーティングのIPCチャネルを使ったプロセス間通信において、クライアント側からサーバーオブジェクト(MarshalByRefObjectを継承したもの)のメソッドを呼ぶたびにサーバープロセスのハンドル数が増えていきます。
ただし、ある程度増えるとハンドル数が減ります(起動時250。 ハンドル600程度になると250~300まで減少)
これはハンドルリークなのか、そもそもリモーティングを使うのとこのように動きになるのか分からないため教えてください。
【共通コード】
public interface ISendToken
{
[OneWay]
void SendToken(bool isAlive);
}
【サーバー側】
public class RemoteTrance : MarshalByRefObject, ISendToken
{
internal event Action<bool> ReceivedTokenEvent;
publico verride object InitializeLifetimeService()
{
returnnull;
}
[OneWay]
publicvoid SendToken(bool isAlive)
{
if (ReceivedTokenEvent != null)
{
ReceivedTokenEvent(isAlive);
}
}
}
【リモーティングオブジェクト生成コード】
var remo = new RemoteTrance();
remo .ReceivedTokenEvent += ReceiveAliveToken;
var channel= new IpcServerChannel("ポート名");
ChannelServices.RegisterChannel(channel, true);
RemotingServices.Marshal(remo, ”クラス名”, typeof(ISendToken));