Я бы сказал, что у вас есть три варианта.
Один, раскрутить вычисление в свой собственный поток.Это будет держать интерфейс отзывчивым.Вместо кнопки отмены просто дайте пользователю знать, что действие, которое он собирается предпринять, нельзя остановить после просмотра.
Два, закрутите вычисление в свой собственный поток, как описано выше;однако делает вид, что отменяет его, просто уменьшая приоритет потоков.Вы можете позволить вычислениям продолжаться, но просто прекратите сообщать о прогрессе в вашем основном потоке.Когда это будет сделано, просто отбросьте результаты.
Три, поместите вычисление в свой собственный домен / процесс приложения.При желании убейте этот внешний процесс.
В каждом есть хорошие и плохие вещи.