Member 12595721 Ответов: 2

Исключение переполнения стека необработано.. C# SNMP


Может ли кто-нибудь, пожалуйста, помочь справиться с этой проблемой. Я новичок в этом C#. Ваша помощь будет очень признательна. Это программа для получения значений MIB сетевой системы, которая применяет SNMP. Я получаю несколько значений, но затем возвращаюсь обратно с этой ошибкой.


- Необработанное исключение типа "система".StackOverflowException 'произошло в mscorlib.dll" показывает в очереди

Richard Deeming

Удаление содержания вашего вопроса после того, как на него был дан ответ, является крайне грубым.

2 Ответов

Рейтинг:
6

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Обычно проблема возникает из-за того, что ваш код вызывает себя рекурсивным способом и не возвращается. конечное условие обычно неверно.


Рейтинг:
15

OriginalGriff

Используйте отладчик.
Установите точку останова на линии:

myMib.loadDirectoryMib(Environment.GetFolderPath(Environment.SpecialFolder.System ));
И шагните в свой метод.
Следуйте коду шаг за шагом и посмотрите, что он делает.
Наиболее вероятным является то, что он пытается рекурсивно загружать файлы, и что рекурсия не завершается - что взрывает стек, и вы получаете исключение.
Мы не можем сделать это для вас: у нас нет вашего Mib класс или ваша папка Windows: черт возьми, мы даже не знаем, какую версию Windows вы используете!
Так что попробуйте и посмотрите, где ваш loadDirectoryMib метод начинает выполняться.