1
EventLoopSchedulerにバグが見つかりました。これを再現する単体テストです。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);
}
}
}
このユニットテストを実行すると、1つのコアが100%で1分間実行されます。
Reflectorをコードで調べて分析したところ、「現在の」アクションの後に2番目のアクションがスケジュールされていると、ManualResetEventがリセットされないという問題があると思います。
これは既知の問題ですか?回避策はありますか?何か不足していますか?