1

我有以下方法返回IEnumerable

public IEnumerable<ExternalFilter> GetExternalFilters()
{
    if (externalfilters == null)
        yield break;
    foreach (ExternalFilter filter in externalfilters)
        yield return filter;
}

如果我查看 VS Quickwatch 中的 GetExternalFilter,在扩展集合时,调试中的程序会立即崩溃,并且 Quickwatch 什么也没有显示。

使用 Quickwatch 消息评估Count()该集合时也是如此Function evaluation was aborted.

我需要什么才能使此功能正常工作?

4

2 回答 2

1

我相信您的参数externalfilters不是线程安全的。

您是否从另一个线程更新您的参数?

如果是这样,请使用lock更新列表并从中读取。

于 2013-05-09T11:12:38.907 回答
1

只是一个预感:也许你的枚举externalfilter只能被评估一次?(例如,因为数据的来源)。

这意味着一旦您尝试使用 QuickWatch 重新评估它的结果GetExternalFilters就会失败。

Ifexternalfilter不仅仅是一个可枚举的,而是一个简单的东西,List<T>那么你的问题就在其他地方。

于 2013-04-09T11:19:23.260 回答