IEnumerable с возвратом урожая и сбоем VS Quickwatch

У меня есть следующий метод, который возвращает IEnumerable

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

Если я смотрю на GetExternalFilter в VS Quickwatch, то при расширении коллекции программа, находящаяся в отладочном режиме, сразу падает, а Quickwatch ничего не показывает.

То же самое при оценке Count() из этой коллекции, с сообщением Quickwatch Function evaluation was aborted.

Что мне нужно, чтобы этот функционал работал?

2 ответа

Я считаю, что ваш параметр externalfilters не является потокобезопасным.

Вы обновляете свой параметр из другого потока?

Если так, используйте lock обновить список и чтение из него.

Просто догадка: может быть, ваше перечисление externalfilter можно оценить только один раз? (Например, из-за источника данных).

Это означает, что как только вы попытаетесь использовать QuickWatch для переоценки результата GetExternalFilters это не удастся.

Если externalfilter это не просто перечисляемый, а что-то вроде простого List<T> тогда ваша проблема лежит где-то еще.

Другие вопросы по тегам