remoting难题

morningnet 2005-11-06 08:51:41
win200s0server,服务器wellknow形式、singlecall模式注册,客户端第一次访问没有什么问题,当客户端关闭以后,第二次打开客户端,服务器不动,客户端访问也没有问题,但是关闭客户段,服务器端就出错,说是内存0x~~~~~~~~~~~~~~~~不能为written.不知道什么原因,请高手指点!
我关闭客户端的时候没有做任何注销客户的方法,估计是重新注册代理类的时候出现问题,不知道如何在客户端关闭的时候注销远程代理类????
...全文
142 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
seekg 2005-12-07
  • 打赏
  • 举报
回复
旁听
Flashcom 2005-11-07
  • 打赏
  • 举报
回复
做法有三个!!
第一,客户端退出时必须注册通道
第二,在中间传递的方法或事件中加入[OneWay]属性,可以出错自动放弃
第三,在中间传递的DLL的方法或事件中加入Try-Catch语句,处理异常,并注销没有通道
方法的catch很简单,这里不说了,说一下事件的catch
下面是一个事件调用的例子了,请参考一下
public void BroadCastingInfo(string info)
{
if (BroadCastEvent != null)
{
BroadCastEventHandler tempEvent = null;

int index = 1; //记录事件订阅者委托的索引,为方便标识,从1开始。
foreach (Delegate del in BroadCastEvent.GetInvocationList())
{
try
{
tempEvent = (BroadCastEventHandler)del;
tempEvent(info);
}
catch
{
MessageBox.Show("事件订阅者" + index.ToString() + "发生错误,系统将取消事件订阅!");
BroadCastEvent -= tempEvent;
}
index++;
}
}
else
{
MessageBox.Show("事件未被订阅或订阅发生错误!");
}
}
zhy0101 2005-11-07
  • 打赏
  • 举报
回复
问题在服务器端了,可能不是程序问题,我用的一个软件一开始每次运行就出现这个毛病,过了一个月自己好了。
beijingbeerman 2005-11-07
  • 打赏
  • 举报
回复
mark
morningnet 2005-11-07
  • 打赏
  • 举报
回复
估计是退出的时候没有注销通道,但是不知道如何解决
koskinen 2005-11-06
  • 打赏
  • 举报
回复
关注

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧