.NET中的事件和内存泄漏

Loa*_*ian 4 .net events memory-leaks

我正在使用C#.NET 3.5 ...我一直在努力通过将数据库相关活动移动到单独的工作对象来解耦BLL对象.worker对象将实体添加到数据库,并将事件成功或失败消息添加回BLL对象.

当我在BLL中实例化worker对象时,我连接了worker的事件并使用事件+ = delegate(eventhandler)语法设置BLL的事件处理程序.

我听说如果我没有使用 - =语法显式地取消监听器,那么当工作者被处置时可能存在内存泄漏.

所有这些处理都发生在一个Windows服务中,该服务从队列中获取消息并调用相应的BLL对象......我担心我可能会在此过程中引入内存泄漏.

Mat*_*kon 6

订阅事件会添加订阅者对提供者的引用.

x.Event + = y.handler表示x现在包含对y的引用

如果x的寿命比y长,那么在x的所有引用都消失之前,y不能被垃圾收集.

在你的情况下,你正在听BLL中工人的事件(如果我理解正确的话),那么除非你明确取消订阅,否则你会引用BLL中剩余的工人.

但是,如果你在与BLL同时完成工作,那么它实际上并不重要.