首页 新闻 赞助 找找看

c#注册事件问题路过的大侠帮忙看下 !

0
悬赏园豆:5 [已解决问题] 解决于 2014-03-27 15:46

如图:

 

这个是 private TQPcGpsClient.PCClientAPISoapClient tk; 注册事件 

现在是不同的页面都有类似的 += 和 new  有时候 发现 事件里面的代码会执行多次感觉,虽然不会报错 总感觉 不合理

还是定义一个全局的 静态的?一次性注册完 让不同的地方调用?还是

+=前 

先 -=
再 += 

? 或者有更好的方法 谢谢你的阅读。

s_p的主页 s_p | 初学一级 | 园豆:138
提问于:2014-03-17 11:30
< >
分享
最佳答案
0

建议1:

在form.load中+=事件,在form.close中-=,并且删除+=自动生成的new EventHandler。并销毁TQPcGpsClient实例

建议2:

既然多页都需要TQPcGpsClient并挂接事件,不要每个页面都new,而是在程序初始化时new,然后传入每个form,

建议3:

在建议2的基础上,重新构造一个新的静态类,在类里面new TQPcGpsClient并挂接事件,在每个form中使用异步回调获取具体的数据。

收获园豆:3
hailants | 小虾三级 |园豆:750 | 2014-03-25 16:58

事件里面的代码会执行多次,是因为你关闭页面时未做-=,导致弱引用,form虽然关闭了,但是你new的TQPcGpsClient对象仍存在,于是仍然会响应事件,然后你再打开form,则由一个新的TQPcGpsClient对象挂载了事件。

检查是否该现象:重复不停打开、关闭同一form,比对内存占用是否上升,并且不会回降

hailants | 园豆:750 (小虾三级) | 2014-03-25 17:00

@hailants: 你的想法我很赞同 谢谢了 朋友 同样也谢谢下面的2位朋友

s_p | 园豆:138 (初学一级) | 2014-03-27 15:46
其他回答(2)
0

这样注册事件是没有错的,对TQPcGpsClient不了解,估计和TQPcGpsClient内部逻辑有关。

收获园豆:1
空明流光 | 园豆:106 (初学一级) | 2014-03-17 11:37
0

一次性注册完,在不同的地方调用代码会很乱的。有时候发现?

收获园豆:1
YoMe | 园豆:545 (小虾三级) | 2014-03-17 13:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册