Каждый раз, когда в программе есть кнопка отмены, она (обычно) не убивает процесс / поток, над которым вы работаете. Такое же поведение отмены (и ожидания) можно увидеть во многих приложениях. Вот почему на Mac есть «Принудительный выход», а в Windows «Выход» для приложений, которые, похоже, не выходят из системы.
Итак, на уровне кода это происходит потому, что вы, вероятно, устанавливаете только флаг, который говорит: «Прекратите делать это, как только закончите с тем циклом, в котором находитесь сейчас». Что происходит, так это то, что вы устанавливаете флаг, но цикл еще далеко не завершен и не проверяет время от времени, что был установлен флаг отмены. Так что, скорее всего, вы ничего не можете с этим поделать, кроме как загрузить исходный код и отправить патч.