如何避免在Rx主题中重复订阅

问题描述 投票:0回答:1

我有一种下面的方法,其中各种客户端可以简单地订阅该主题。我只想处理某人意外不多次订阅的情况。因此,在订阅之前,我需要检查主题是否已经订阅了同一客户端,然后什么也不做。我使用称为Distinct的linq方法进行了检查,但它仅返回一个观察者。我认为必须有直接的方法来做到这一点?如果有人知道,请分享相同

class SettingManger
{
   private Subject<string> suject = new Subject<string>();

           public IDisopable SubscribeToChange(IObserver<string>subscriber)
          {
             return subject.subscribe(subscriber);
          }
}
c# rxjs system.reactive reactive
1个回答
0
投票

如果我们假设您的对象主题具有订户列表,请尝试以下操作:

if (!subject.Subscribers.Any(x=>x.equals(subscriber)) {

     subject.subscribe(subscriber);
}
© www.soinside.com 2019 - 2024. All rights reserved.