Здравствуйте, KRA, Вы писали:
KRA>Здравствуйте, slavenin137, Вы писали:
S>>Добрый день!
S>>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
S>>т.е.
S>>...
S>>...
S>>if (...) { СТОП!; }
KRA>Думаю, что правильный ответ прозвучалАвтор: AngeL B.
Дата: 29.09.08
. Я лишь немного уточню.
KRA>Правильно ли я понимаю, что происходит следующее:
KRA>1. по какому-то событию (я так понял по нажатию на конопку) запускается обработчик события (назовём его eventHandler)
KRA>2. внутри него вызывается какая-то функция которая может работать долго (назовём её longRunningFunc)
KRA>3. в функции longRunningFunc ( или в какой-то функции A, которая прямо или непрямо вызывается из longRunningFunc) по какому-то условию показывается диалог, который спрашивает, что-то вроде "остановить процес?"
KRA>4. если пользователь говорит "я буду мужественно ждать", ничего не происходит — longRunningFunc и дальше продолжает заполнять список
KRA>5. если же пользователь выбрал вариант "с меня хватит", то мы должны завершить longRunningFunc и eventHandler.
KRA>Если всё вышенаписаное приблизительно так и есть, то для получения нужного еффекта без существенных переделок нужно
KRA>1. создать класс AbortLongRunningFuncException
KRA>2. вызов longRunningFunc в eventHandler-e заключить в try/catch вот так
KRA>KRA>void eventHandler(...)
KRA>{
KRA>...
KRA>try {
KRA>list = longRunningFunc(...)
KRA>} catch (AbortLongRunningFuncException e)
KRA>{
KRA>return;
KRA>}
KRA>}
KRA>
KRA>3. в месте где надо оборвать жизнь longRunningFunc (в вопросе в том месте написано СТОП!) бросить исключение AbortLongRunningFuncException
а ещё на меня тут бочку катили что я плохо объяснил))) Вот! пришел человек и все правильно понял!
спасибо огромное=)