[英]IEnumerable with yield return and VS Quickwatch crash
我有以下方法返回IEnumerable
public IEnumerable<ExternalFilter> GetExternalFilters()
{
if (externalfilters == null)
yield break;
foreach (ExternalFilter filter in externalfilters)
yield return filter;
}
如果我在VS Quickwatch中查看GetExternalFilter,则在扩展集合时,调试中的程序会立即崩溃,而Quickwatch则什么也不显示。
使用Quickwatch消息Function evaluation was aborted.
该集合的Count()
的操作相同Function evaluation was aborted.
我需要具有此功能才能工作?
只是预感:也许您的枚举externalfilter
只能被评估一次? (例如,由于数据的来源)。
这意味着,一旦您尝试使用QuickWatch重新评估GetExternalFilters
的结果,它将失败。
如果externalfilter
不仅是可枚举的,而且还是简单的List<T>
类的东西,那么您的问题就出在其他地方。
我相信您的参数externalfilters
不是线程安全的。
您是否从另一个线程更新参数?
如果是这样,请使用lock
来更新列表并从中读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.