win200s0server,服务器wellknow形式、singlecall模式注册,客户端第一次访问没有什么问题,当客户端关闭以后,第二次打开客户端,服务器不动,客户端访问也没有问题,但是关闭客户段,服务器端就出错,说是内存0x~~~~~~~~~~~~~~~~不能为written.不知道什么原因,请高手指点!
我关闭客户端的时候没有做任何注销客户的方法,估计是重新注册代理类的时候出现问题,不知道如何在客户端关闭的时候注销远程代理类????
我关闭客户端的时候没有做任何注销客户的方法,估计是重新注册代理类的时候出现问题,不知道如何在客户端关闭的时候注销远程代理类????
第一,客户端退出时必须注册通道
第二,在中间传递的方法或事件中加入[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("事件未被订阅或订阅发生错误!");
}
}