我想我在EventLoopScheduler中发现了一个错误。这是一个单元测试,可以重现它。
using System;
using System.Threading;
using NUnit.Framework;
using System.Reactive.Concurrency;
namespace EventLoopSchedulerTests {
[TestFixture]
public class EventLoopSchedulerTests {
[Test]
public void TestEventLoopScheduler() {
var scheduler = new EventLoopScheduler();
scheduler.Schedule(TimeSpan.FromMinutes(1), () => { });
Thread.Sleep(1000);
scheduler.Schedule(TimeSpan.FromMinutes(2), () => { });
Thread.Sleep(1000*60);
}
}
}
如果你运行这个单元测试,一个核心将以100%运行一分钟。
我在代码中查看了Reflector并对其进行了分析,我认为问题是如果在“当前”之后安排第二个操作,则不会重置ManualResetEvent。
这是一个已知问题吗?有解决方法吗?我错过了什么吗?
答案 0 :(得分:1)
我在Reactive Extensions论坛上得到了答案。 http://social.msdn.microsoft.com/Forums/en-US/rx/thread/8705ddf1-7cd2-41a1-b1b2-47d68f895053