Отклонение функции отключено, так как предыдущая оценка функции была отключена
У меня есть приложение С#, в котором я получаю эту ошибку:
"Оценка функции отключена, потому что предыдущая оценка функции завершена. Вы должны продолжить выполнение для повторной оценки функции.
Я видел много сообщений, связанных с этой ошибкой в stackoverflow и msdn, но не нашел решения. Большинство людей говорят, что эта ошибка возникает в многопоточном приложении и может быть устранена путем удаления всех точек останова.
В моем случае мое приложение однопоточное, и я удалил все точки останова, но все же я получаю эту ошибку при отладке приложения.
Когда я запускаю приложение. без отладки, мое приложение просто зависает, и я должен остановить его через визуальную студию.
Я попытался найти код, где его повесить, и я нашел линию, где он повесился. Вот фрагмент кода:
MatchCollection matchesFound = Regex.Matches(content,
keywordPattern,
RegexOptions.Multiline);
int matchCount = matchesFound.Count;
Когда выполнение выполняется во второй строке, то есть когда код пытается получить значение свойства Count, мое приложение зависает. Мое регулярное выражение прекрасно, поскольку я тестировал его в Expresso, и я уверен, что приложение не получает повешение при выполнении метода Matches().
Если я прихожу к этой линии путем отладки, я получаю вышеупомянутую ошибку.
Кто-нибудь знает, почему возникает эта ошибка и как ее решить?
Я использую Visual Studio 2005.
Ответы
Ответ 1
Причины зависания и этого сообщения об ошибке, вероятно, те же: для вычисления требуется много времени. И когда вы делаете это в коде и в отладчике. Отладчик не имеет волшебной силы для вычисления чего-то быстрее, чем ваше приложение.
Вы можете использовать Debug.WriteLine
для вывода фактических content
и keywordPattern
. Я думаю, легко может быть, что оба они достаточно велики, чтобы отвлечься.