为防止客户端订阅了服务器端的事件而没有释放,服务器端的事件调用已经加了try catch(在catch中加入了释放语句),但是这样做遇到一个问题,当一个客户端没有正常释放事件,另一个客户端运行到try catch语句时,会有不定时的停顿,快则几秒,慢则几分钟。
这样说不知大家明否。不明的话我再上程序。
谢谢!!
这样说不知大家明否。不明的话我再上程序。
谢谢!!
解决方案 »
- 【向各位大大提问】怎样能让DataGridView中的内容垂直显示?
- 我做好的数据库关了机之后怎么找不到了啊?
- 添加服务引用,遇到了大问题。求救?
- label2.BeginInvoke(new paramterTask(showTaskInfo), tskEntity, contactName);
- C# ref相关疑问。
- 程序中引用了SetWindowsHookEx Api函数,在Win98下不能运行,如何解决?
- [WinForm]棘手问题再发!在带有背景图片的Form上放置大量透明背景的Lable控件时,刷新会很慢!
- 如何在二维数组中去除重复项!up有分!谢谢!
- 初学菜鸟求助(在线等)
- 初学C#用什么编译?
- 请教FarPoint Spread For .Net WinForm 控件的一个问题
- 关于自定义控件资源回收的问题
if (this.O_ArriveNumEvent != null)
{
foreach (Delegate d in O_ArriveNumEvent.GetInvocationList())
{
try
{
((IQueueLib.O_ArriveNumEventHandler)d)(this, sChnNum, args); //向客户端激活事件
}
catch
{
O_ArriveNumEvent -= (IQueueLib.O_ArriveNumEventHandler)d; //解决当客户端非法退出时未释事件委托
}
}
}
以上代码存在于服务器中,现在有两个程序A,B,同样订阅了_ArriveNumEvent 这个事件,如果两个程序都正常退出,上面的代码执行是没问题的,但如果程序A不正常退(如掉电),那么程序B再执行以上代码时会出现一次几秒至几分钟的停顿,时间不定,但一定能执行成功。估计是try语句出现停顿后再执行catch语句,释放程序A的订阅,以后程序B就正常了。这样说,大家表白我的意思吗?
加QQ6268631