如图:
这个是 private TQPcGpsClient.PCClientAPISoapClient tk; 注册事件
现在是不同的页面都有类似的 += 和 new 有时候 发现 事件里面的代码会执行多次感觉,虽然不会报错 总感觉 不合理
还是定义一个全局的 静态的?一次性注册完 让不同的地方调用?还是
+=前
先 -=
再 +=
? 或者有更好的方法 谢谢你的阅读。
建议1:
在form.load中+=事件,在form.close中-=,并且删除+=自动生成的new EventHandler。并销毁TQPcGpsClient实例
建议2:
既然多页都需要TQPcGpsClient并挂接事件,不要每个页面都new,而是在程序初始化时new,然后传入每个form,
建议3:
在建议2的基础上,重新构造一个新的静态类,在类里面new TQPcGpsClient并挂接事件,在每个form中使用异步回调获取具体的数据。
事件里面的代码会执行多次,是因为你关闭页面时未做-=,导致弱引用,form虽然关闭了,但是你new的TQPcGpsClient对象仍存在,于是仍然会响应事件,然后你再打开form,则由一个新的TQPcGpsClient对象挂载了事件。
检查是否该现象:重复不停打开、关闭同一form,比对内存占用是否上升,并且不会回降
@hailants: 你的想法我很赞同 谢谢了 朋友 同样也谢谢下面的2位朋友
这样注册事件是没有错的,对TQPcGpsClient不了解,估计和TQPcGpsClient内部逻辑有关。
一次性注册完,在不同的地方调用代码会很乱的。有时候发现?