我有以下代码:
var sequence = from row in CicApplication.DistributorBackpressure44Cache
where row.Coater == this.Coater && row.IsDistributorInUse
select new GenericValue
{
ReadTime = row.CoaterTime.Value,
Value = row.BackpressureLeft
};
this.EvaluateBackpressure(sequence, "BackpressureLeftTarget");
而 DistributorBackpressure44Cache 定义如下:
internal static List<DistributorBackpressure44> DistributorBackpressure44Cache
{
get
{
return _distributorBackpressure44;
}
}
这是一个重线程应用程序的一部分,其中 DistributorBackpressure44Cache 可以在一个线程中刷新,并从另一个线程中查询,如上所示。上面的变量 'sequence' 是一个 IEnumerable,它被传递给所示的方法,然后在实际执行之前可能传递给其他方法。我关心的是这个。如果在实际执行查询时正在刷新(清除并重新填充)DistributorBackpressure44Cache,上述查询会发生什么情况?
锁定这段代码并没有任何好处,因为这个查询实际上会在稍后的某个时间执行(除非我要立即将其转换为列表)。