Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Перехват Access Violation запущенного приложения


Автор: CPlusPlusFAN 10.2.2008, 21:23
Здравствуйте.

Программа запускает какое-то приложение, которое может выбросить Access Violation. Как мне обнаружить эту ситуацию и отрубить процесс/поток этой программы?

И ещё, как завершить запущенное приложение, если оно работает дольше определённого интервала времени? (например, 1 секунда)

Автор: Hidrag 10.2.2008, 21:43
Вот пример, запускаю калькулятор, через секунду его вырубаю, а отловить эксепшен в запущенном приложении не реально
Код

        try {
            Process proc = Runtime.getRuntime().exec("calc");
            Thread.sleep(1000);
            proc.destroy();
        } catch (Exception ex) {
            ex.printStackTrace();
        }


Автор: CPlusPlusFAN 10.2.2008, 21:51
Стоп. Это само приложение ждёт секунду, а затем вырубает процесс?

Автор: Hidrag 10.2.2008, 22:30
это для простоты пример, ты можешь реализовать свой метод отсчета времени, можешь описать задачу более детально, будет и более детальный ответ ;)

Автор: CPlusPlusFAN 12.2.2008, 00:24
Мне нужен аналог WaitForSingleObject, только в яве. Если процесс длится меньше определённого времени, то по его завершении продолжить работу, а не выжидать остаток времени. Если процесс работает больше этого времени, то вырубить его.

По поводу AccessViolation, в тестирующих системах они как-то обнаруживаются.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)