在我的.net 2.0应用程序中,Remote对象突然被破坏并抛出以下异常."无法连接到IPC端口:系统找不到指定的文件."
我有IPC远程服务器,它创建一个单例对象.
我已覆盖InitializeLifetimeService()方法并返回null无限生命周期.
服务器和客户端应用程序工作正常但有时我们得到了上述异常.
serverCode:
//创建并注册processheartbeat.BinaryServerFormatterSinkProvider serverprovider = new BinaryServerFormatterSinkProvider(); serverprovider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; //托管Heartbeat对象并注册它.processHeartbeatChn = new IpcServerChannel("HeartbeatChannel","localhost:"+ applicationHeartbeatPort,serverprovider);
//registers the channel
ChannelServices.RegisterChannel(processHeartbeatChn, false);
//register the service
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Heartbeat),
appName, WellKnownObjectMode.Singleton);
Run Code Online (Sandbox Code Playgroud)
ClientCode:
string uri = string.Format(CultureInfo.InvariantCulture,"ipc://localhost:{0}/{1}", applicationHeartbeatPort, appName);
//get the Heartbeat object
remoteHeartbeat = (Heartbeat)Activator.GetObject(typeof(Heartbeat), uri);
Run Code Online (Sandbox Code Playgroud)
任何热修复都可以解决这个问题?
任何人都可以帮我这个吗?
我System.Timers.Timer在类级别中对declered 对象进行了创建并在构造函数中创建.在另一个方法中启动了计时器.
在elapsed事件处理程序中,enabled属性设置为false并执行某些代码并再次启用set设置为true.
我正在为每个层级获得过去的事件.问题是在经过一段时间后停止了.
我怀疑GC在已经过时的事件hanler eventhadler中将momment enabled属性设置为false时收集了计时器对象.
所以我希望我的计时器对象设置为活着.
GC.KeepAlive(timer)我应该在我的项目中宣布哪里?