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 调用仍在发生)。

没有对订阅调用 dispose。

我使用 rx-experimental 1.11111。

什么可能导致这种情况?

4

3 回答 3

1

您可以使用 Rx v2.0 RC 进行检查吗?我们已经解决了 EventLoopScheduler 和 ObserveOn 中的一些问题。

于 2012-06-25T09:20:02.870 回答
1

一种可能性是OnException,一旦发生这种情况,订阅就会结束。

于 2012-06-24T23:45:17.280 回答
1

如果OnCompleteOnError被提出,未来的OnNext价值将被忽略。

作为旁注,我是否正确假设您的实际循环代码执行了与间隔触发值更相关的事情?否则你可以简单地使用Observable.Interval

于 2012-06-24T23:48:35.017 回答