繁体   English   中英

IEnumerable具有收益率回报和VS Quickwatch崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM