Каждый раз, когда пользователь сообщает об ошибке, такой как
System.Runtime.InteropServices.SEHException - Внешний компонент выдал исключение?
Есть ли что-то, что я, программист, могу сделать, чтобы определить причину?
Сценарий: один пользователь (используя программу, написанную моей компанией) сообщил об этой ошибке.
Это может быть или не быть единовременной ошибкой. Они упомянули, что за последний месяц компьютер дважды «перестал работать». Из своего опыта я научился не воспринимать это описание слишком буквально, поскольку обычно это означает, что кто-то, имеющий отношение к компьютеру, работает не так, как ожидалось. Они не смогли дать мне больше деталей, и я не смог найти ни одной зарегистрированной ошибки. Следовательно, это может быть или не быть этой ошибкой.
Из трассировки стека действительная ошибка была при создании класса, который напрямую не вызывает код взаимодействия, но, возможно, усложняется тем фактом, что объект может быть частью списка, который связан с сетью DevExpress.
Ошибка была «поймана» подпрограммой необработанного исключения, которая обычно закрывает программу, но имеет возможность игнорировать и продолжить. Если они решили игнорировать ошибку, то программа продолжала работать, но ошибка снова возникла при следующем запуске этой процедуры. Однако это не произошло снова после закрытия и перезапуска нашего приложения.
Похоже, рассматриваемый компьютер не был перегружен. Он работает под управлением Vista Business, имеет 2 ГБ памяти и, по словам диспетчера задач, использует только половину этого, а наше приложение - около 200 МБ.
Существует еще одна информация, которая может иметь или не иметь отношение к делу. Другой раздел этой же программы использует сторонний компонент, который фактически является оболочкой dotnet вокруг нативной библиотеки DLL, и у этого компонента есть известная проблема, в которой очень редко вы получаете
Попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена
Производители компонентов говорят, что это было исправлено в последней версии их компонента, которую мы используем внутри компании, но это еще не было предоставлено заказчику.
Учитывая, что последствия ошибки невелики (работа не теряется, перезапуск программы и возврат туда, где они были, занимает максимум минуту) и учитывая, что клиент вскоре получит новую версию (с обновленный сторонний компонент), я, очевидно, могу скрестить пальцы и надеяться, что ошибка не повторится.
Но могу ли я что-нибудь еще сделать?