using System;
using System.Reactive.Linq;
using System.Reactive.Subjects;
public class BasicMessageBus
{
private static readonly BasicMessageBus _instance = new();
public static BasicMessageBus Inst => _instance;
private readonly Subject<object> _messages = new();
public IObservable<T> Subscribe<T>() => _messages.OfType<T>();
public void Send(object message) => _messages.OnNext(message);
}
1
hez2010 1 天前
没有看到哪里有内存泄露的风险。
调用 Subscribe 的方法所在的对象如果被回收了那对 _messages 的引用也就自动没了,除非你是在哪个具有 static 生命周期的对象中调用了 Subscribe 。 |