2011-03-12 44 views
1

我采取一个类Cache取决于IScheduler并拥有财产TestScheduler.RunTo不更新现在物业

public bool IsValid 
{ 
    get { return scheduler.Now - lastUpdate < timeout; } 
} 

为了测试我想用TestScheduler但它RunTo方法并不表现我所期望的方式:

var scheduler = new TestScheduler(); 
scheduler.RunTo(100); 
scheduler.Ticks.Should().Be(100); // Fails, actual value is 0 

这是一个错误吗?

回答

4

TestScheduler将运行直到最后一次计划的操作,而不是所有的方法到RunTo时间。

因此,使用例如:

var a = 1; 
var scheduler = new TestScheduler(); 
scheduler.Schedule(() => a++, TimeSpan.FromTicks(50)); 
scheduler.RunTo(100); 

scheduler.Ticks将等于50。

var a = 1; 
var scheduler = new TestScheduler(); 
scheduler.Schedule(() => a++, TimeSpan.FromTicks(50)); 
scheduler.Schedule(() => a++, TimeSpan.FromTicks(70)); 
scheduler.RunTo(100); 

scheduler.Ticks将等于70。

我想这是不浪费循环处理一直到RunTo的时钟,因为没有计划执行它。

+0

我会说,参与推进到RunTo时间CPU周期的量是微不足道的 - 一个赋值操作。 – 2011-03-16 15:51:54

+0

@Konstantin Spirin - 我同意。我只是在刺探它为什么表现如此。如果这是一个错误,那么这对我来说很酷。当然它会在下一个版本中分类。 – 2011-03-17 09:01:10