У меня долгая работа с кучей "_isCancelled"
флагов
// long running code
if (_isCancelled)
return;
// more code
if (_isCancelled)
return;
// more code
if (_isCancelled)
return;
// etc.
но было бы намного чище и проще добавить «долго работающий код», если бы я мог каким-то образом прервать операцию из «внешнего» потока прослушивания
например
-(void)longRunningAsyncOperation
{
@try {
// long running operation
} @catch
{
// if aborted just return
}
}
-(void)cancelOperation
{
// raise an exception on a "listening" thread
}
Есть мысли по поводу этого подхода? Является ли это возможным?