0

次のコードでは:

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コンストラクターを呼び出すと期待どおりに機能するため、スレッドの問題だと思います。

助言がありますか?

4

0 に答える 0