Re[2]: полная_остановка_кода_С#
От: slavenin137  
Дата: 01.10.08 20:56
Оценка:
Здравствуйте, 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


а ещё на меня тут бочку катили что я плохо объяснил))) Вот! пришел человек и все правильно понял!
спасибо огромное=)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.