Мне нужно просто прервать функцию даже «в середине» прогресса, когда условие кажется истинным. Есть идеи?
Не существует «простого» способа прервать функцию в середине процесса [*], и это хорошо. Прерывание функции в середине может привести к тому, что ваша система будет в несовместимом состоянии (представьте, что прерывание происходит в середине записи файла).
Правильный способ сделать это - определить «безопасные точки» в вашей функции, где возможно прерывание, и выполнить там проверку:
... // some statement
if (condition) return;
... // some more statements
if (condition) return;
...
Сноска: [*] Я лгал, когда сказал, что не существует простого способа прервать функцию. Он есть, и он называется Thread.Abort
(для этого вам нужно запустить свою функцию в отдельном потоке и отслеживать condition
в другом потоке, обычно в основном потоке пользовательского интерфейса). Однако использование Thread.Abort не рекомендуется по по причинам, указанным выше. Не делай этого.