简单的可观察变量按预期工作,立即在同一线程上触发触发器回调。 为什么任何可观察类型的类变量(Subject,ISubject,Observable,IObservable)都不会触发回调?
带有简单变量的示例-[Works]
didSet
课程示例-[无效]
var x1 = new Subject<string>();
var x2 = x1.DistinctUntilChanged();
x2.Subscribe(o =>
{
// Triggered as expected
});
x1.OnNext("Hello");
答案 0 :(得分:2)
问题是您让Demo
每次使用时都返回Subject<string>
的新实例。
Demo
实例与您在OnNext()
上调用的实例也不相同。
class1.Demo.Subscribe(...); // makes new instance `Subject<string>`
class1.Demo.OnNext("Hello"); // makes another new instance of `Subject<string>`
将其保留在相同的实例中,它将起作用。例如:
public class InstrumentModel
{
public Subject<string> Demo = new Subject<string>();
}
或:
public class InstrumentModel
{
public InstrumentModel()
{
this.Demo = new Subject<string>();
}
public Subject<string> Demo { get; }
}