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