EventLoopScheduler Ошибка? - PullRequest
       0

EventLoopScheduler Ошибка?

1 голос
/ 30 марта 2012

Я думаю, что нашел ошибку в 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 не сбрасывается, если после «текущего» запланировано второе действие.

Это известная проблема?Есть ли обходной путь?Я что-то упустил?

1 Ответ

1 голос
/ 03 апреля 2012

Я получил ответ на форуме Reactive Extensions. http://social.msdn.microsoft.com/Forums/en-US/rx/thread/8705ddf1-7cd2-41a1-b1b2-47d68f895053

...