Re: полная_остановка_кода_С#
От: KRA Украина  
Дата: 01.10.08 20:52
Оценка: 4 (2)
Здравствуйте, slavenin137, Вы писали:

S>Добрый день!

S>Скажите пожалуйста как сделать так чтобы при опреденных обстоятельствах выполнение кода преращалось?
S>т.е.
S>...
S>...
S>if (...) { СТОП!; }

Думаю, что правильный ответ прозвучал
Автор: AngeL B.
Дата: 29.09.08
. Я лишь немного уточню.

Правильно ли я понимаю, что происходит следующее:
1. по какому-то событию (я так понял по нажатию на конопку) запускается обработчик события (назовём его eventHandler)
2. внутри него вызывается какая-то функция которая может работать долго (назовём её longRunningFunc)
3. в функции longRunningFunc ( или в какой-то функции A, которая прямо или непрямо вызывается из longRunningFunc) по какому-то условию показывается диалог, который спрашивает, что-то вроде "остановить процес?"
4. если пользователь говорит "я буду мужественно ждать", ничего не происходит — longRunningFunc и дальше продолжает заполнять список
5. если же пользователь выбрал вариант "с меня хватит", то мы должны завершить longRunningFunc и eventHandler.

Если всё вышенаписаное приблизительно так и есть, то для получения нужного еффекта без существенных переделок нужно
1. создать класс AbortLongRunningFuncException
2. вызов longRunningFunc в eventHandler-e заключить в try/catch вот так

void eventHandler(...) 
{
...
try {
list = longRunningFunc(...)
} catch (AbortLongRunningFuncException e)
{
return;
}

}


3. в месте где надо оборвать жизнь longRunningFunc (в вопросе в том месте написано СТОП!) бросить исключение AbortLongRunningFuncException
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.