奇妙な質問があります。コードの一部から始めましょう。
foreach (var para in paras)
{
var specificSubject = string.Format(subject, paras);
_listener = new Listener(Queue.Default, transport, specificSubject, new object());
_listener.MessageReceived += OnMessage;
}
ご覧のとおり、Tibco Listenerオブジェクトを作成し、それをリモートデーモンにサブスクライブしてから、作成した次のTibcoListenerオブジェクトに参照を移動します。
ガベージコレクターは、_listenerが参照するため、最後のオブジェクトを除くすべてのリスナーオブジェクトを収集することを期待しています。ただし、実行結果は、すべてのリスナーオブジェクトが機能していることを示しています。
なぜ?GCがリスナーオブジェクトを収集する時間がないほどアプリケーションを十分に長く実行していないという理由だけでしょうか、それとも「孤立しているはずの」リスナーオブジェクトを参照している固有のものがあるのでしょうか。
教えてください!ありがとう。