0

次のような RX コードがあります。

    static ISubject<Unit> m_events = new Subject<Unit>();
    private static EventLoopScheduler m_scheduler;

    static void Main(string[] args)
    {
        m_scheduler = new EventLoopScheduler();
        m_events.ObserveOn(m_scheduler).Subscribe(onEvent);            
        foo();
    }

    static void onEvent(Unit p)
    { 
        // do something
    }

    static void foo()
    {
        while (true)
        {
            m_events.OnNext(Unit.Default);
            Thread.Sleep(10);
        }
    }

数日に一度、プログラムが onEvent メソッドに入らなくなり、回復することはありません。(それでも OnNext 呼び出しは発生し続けます)。

サブスクリプションに対して破棄が呼び出されませんでした。

rx-experimental 1.11111 を使用しています。

何が原因でしょうか?

4

3 に答える 3

1

1 つの可能性として、OnExceptionこれが呼び出されると、サブスクリプションが終了します。

于 2012-06-24T23:45:17.280 に答える
1

OnCompleteまたはが発生した場合OnError、将来のOnNext値は無視されます。

補足として、あなたの実際のループコードが、間隔で値を発生させるより関連性のある何かを行うと仮定して、私は正しいですか? それ以外の場合は、単に使用できますObservable.Interval

于 2012-06-24T23:48:35.017 に答える
1

Rx v2.0 RC を使用して確認できますか? EventLoopScheduler と ObserveOn の多くの問題を解決しました。

于 2012-06-25T09:20:02.870 に答える