Как убить / остановить фоновый поток? - PullRequest
3 голосов
/ 11 ноября 2010

Итак, у меня есть метод, который выполняет цикл, и из-за того, как работает моя программа, я вызываю этот метод, используя,

[self performSelectorInBackground:@selector(myMethod:) withObject:arg];

и сам метод,

- (void)myMethod:(id)arg {
    //...

    for (//Loop Conditions) {
        if (stopMorse) {
            break;
        }
        //Do stuff
    }

    //...
}

Теперь я хотел бы позволить пользователю остановить запуск этого цикла, поэтому есть ли способ убить / остановить поток.

Я пытался добавить BOOL, но проблема в том, что он не обновляется, потому что он находится в отдельном потоке. Каков наилучший способ остановить этот цикл?

1 Ответ

4 голосов
/ 11 ноября 2010

Вы не должны принудительно уничтожать / останавливать поток по причинам, изложенным в этом ответе на аналогичный вопрос , и этом ответе на другой аналогичный вопрос .

Должна быть возможность проверить логическое значение, как вы делаете, и не должно быть проблем с другим потоком, устанавливающим значение логического значения. Можете ли вы опубликовать код, который пытается установить логическое значение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...