Из-за общей памяти, когда происходит сбой DLL-библиотеки MS Visual C 6.0, также происходит сбой VB 6 EXE - PullRequest
0 голосов
/ 03 марта 2010

У меня проблема, когда из-за общей памяти, когда происходит сбой DLL-библиотеки MS Visual C 6.0, это также приводит к сбою EXE VB 6. Наша основная программа EXE написана на VB 6. Она вызывает плагины (DLL) для различных типов файлов, они написаны на MS Visual C 6.0. Когда плагин «C» (DLL) сталкивается с проблемой, он иногда падает, и это приводит к аварийному завершению программы EXE, так как они используют одно и то же адресное пространство. Итак, я ищу способ предотвращения DLL DLL MS Visual C 6.0 также вызвать сбой EXE VB 6, когда происходит сбой DLL.

1 Ответ

2 голосов
/ 03 марта 2010

Это не имеет ничего общего с DLL против EXE. Это поток, который падает. Если вы не поймаете исключение, то это вызовет обработчик исключений по умолчанию в Windows. Который прекратит процесс, опционально сообщая Microsoft о проблеме.

Перехват и обработка исключений, таких как AccessViolation, невозможны в VB6. В любом случае, это не стоит того, ваш основной поток выполнения перенес сердечный приступ и не может продолжать значимым образом. Даже если бы вы могли ее поймать, программа находится в очень плохом состоянии, ее глобальное состояние частично изменено. Попытка продолжить просто создаст больше сбоев. Или, что еще хуже, генерируйте неверные результаты и уничтожайте ценные данные.

Один из вариантов - запустить DLL в отдельном процессе. Сбой завершит этот процесс, а не ваш. Получить правильное значение очень сложно, трудно обнаружить сбой. И процесс взаимодействия сложен.

...