Оценка функции отключена, поскольку истек срок ожидания предыдущей оценки функции - PullRequest
20 голосов
/ 27 апреля 2010

У меня есть приложение на C #, в котором я получаю эту ошибку:

"Оценка функции отключена, поскольку истек срок ожидания предыдущей оценки функции. Вы должны продолжить выполнение до возобновления оценки функции."

Я видел много сообщений, связанных с этой ошибкой, на stackoverflow и на msdn, но не нашел решения. Большинство людей говорят, что эта ошибка возникает в многопоточном приложении и может быть устранена путем удаления всех точек останова. В моем случае мое приложение является однопоточным, и я также удалил все точки останова, но все равно я получаю эту ошибку при отладке приложения. Когда я запускаю приложение. без отладки мое приложение просто зависает, и я должен остановить его через визуальную студию. Я попытался найти код, где он зависает, и нашел строку, где он зависает. Вот фрагмент кода:

MatchCollection matchesFound = Regex.Matches(content, 
                                             keywordPattern,
                                             RegexOptions.Multiline);
int matchCount = matchesFound.Count;

Когда выполнение происходит во второй строке, то есть когда код пытается получить значение свойства Count, мое приложение зависает. Мое регулярное выражение в порядке, так как я проверил его в Expresso, и я уверен, что приложение не зависает при выполнении метода Matches (). Если я прихожу к этой строке путем отладки, я получаю вышеупомянутую ошибку. Кто-нибудь знает, почему возникает эта ошибка и как ее устранить?

Я использую Visual studio 2005.

1 Ответ

8 голосов
/ 27 апреля 2010

Причины зависания и этого сообщения об ошибке, вероятно, одинаковы : есть что-то, что требует много времени для вычисления. И когда вы делаете это в коде и в отладчике. Отладчик не имеет магической силы, чтобы вычислить что-то быстрее, чем ваше приложение.

Вы можете попытаться использовать Debug.WriteLine для вывода фактических content и keywordPattern. Я думаю, легко может оказаться, что оба достаточно велики, чтобы продолжить.

...