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>
тогда ваша проблема лежит где-то еще.