Loa*_*ian 4 .net events memory-leaks
我正在使用C#.NET 3.5 ...我一直在努力通过将数据库相关活动移动到单独的工作对象来解耦BLL对象.worker对象将实体添加到数据库,并将事件成功或失败消息添加回BLL对象.
当我在BLL中实例化worker对象时,我连接了worker的事件并使用事件+ = delegate(eventhandler)语法设置BLL的事件处理程序.
我听说如果我没有使用 - =语法显式地取消监听器,那么当工作者被处置时可能存在内存泄漏.
所有这些处理都发生在一个Windows服务中,该服务从队列中获取消息并调用相应的BLL对象......我担心我可能会在此过程中引入内存泄漏.
订阅事件会添加订阅者对提供者的引用.
x.Event + = y.handler表示x现在包含对y的引用
如果x的寿命比y长,那么在x的所有引用都消失之前,y不能被垃圾收集.
在你的情况下,你正在听BLL中工人的事件(如果我理解正确的话),那么除非你明确取消订阅,否则你会引用BLL中剩余的工人.
但是,如果你在与BLL同时完成工作,那么它实际上并不重要.
归档时间: |
|
查看次数: |
1237 次 |
最近记录: |