我有一个奇怪的问题,让我们从一段代码开始:
foreach (var para in paras)
{
var specificSubject = string.Format(subject, paras);
_listener = new Listener(Queue.Default, transport, specificSubject, new object());
_listener.MessageReceived += OnMessage;
}
如您所见,我创建了一个 Tibco 侦听器对象,将其订阅到某个远程守护程序,然后将引用移动到我创建的下一个 Tibco 侦听器对象。
我希望垃圾收集器收集除最后一个之外的所有侦听器对象,因为 _listener 引用它。但是,运行结果表明所有侦听器对象都在工作。
所以为什么?仅仅是因为我没有运行我的应用程序足够长的时间,以至于 GC 没有时间收集侦听器对象,还是有一些固有的东西在引用“应该孤立”的侦听器对象?
请赐教!谢谢。