次のコードでは:
public class Connection
{
private BehaviorSubject<string> addressSubject = new BehaviorSubject<string>("null");
private EventLoopScheduler scheduler = new EventLoopScheduler(ts => new Thread(ts));
private IDisposable reconnectSubscription = null;
public Connection()
{
this.reconnectSubscription = this.addressSubject
.ObserveOn(this.scheduler)
.CombineLatest(Observable.Interval(TimeSpan.FromSeconds(1), this.scheduler), (x, y) => x)
.Subscribe(x => Debug.WriteLine(x));
}
public void Connect(string address)
{
Observable.Start(() => this.addressSubject.OnNext(address), this.scheduler);
}
public void Disconnect()
{
Observable.Start(() => this.addressSubject.OnNext(null), this.scheduler);
}
}
「Connect」を呼び出すと、印刷されます。
null
localhost
null
localhost
null
localhost
Connect
コンストラクターを呼び出すと期待どおりに機能するため、スレッドの問題だと思います。
助言がありますか?