修改
关闭这个,因为我是白痴并且没有意识到我的GetLogEntries()
方法是错误的:我在那里做了一些时间计算,而不是使用{{ 1}},我正在使用TimeSpan.TotalMilliSeconds
。
呀。
原始问题:
鉴于以下4种方法,其中3种方法工作得很好,但最后一种方法没有,我无法弄清楚为什么最后一种方法没有。
我无法弄清楚TestCase4()无法正常工作的原因。我错过了什么吗?
TimeSpan.Milliseconds
答案 0 :(得分:3)
你正在试验的Buffer()
的两个重载的实现(不出所料)完全不同 - 但我认为这是一个红色的鲱鱼。根据您使用它们的方式,结果应该相同。
正如Dave Sexton在评论中暗示的那样,你所展示的代码省略了两个重要部分:
GetLogEntries()
Case<n>
方法如果Buffer
实施被破坏,我会非常惊讶。此外,您显示的代码正确调用Buffer
重载。
因此最可能的解释是问题出现在省略的代码中。
我注意到您在GetLogEntries()
和this.LogsProvider
之间可能共享的实例(Case3
)上调用Case4
。我强烈怀疑是这种情况,并且您对GetLogEntries()
的调用不是幂等的,并且具有副作用,导致第二次调用不返回任何条目。是否每次都可以返回最新的未报告日志条目?