Нормальные события недостаточно отзывчивы, поскольку бэкэнд-вызов так или иначе отнимает так много времени
Это не так.Понять «цикл сообщений» очень важно, обязательно прочитайте его.Короче говоря, Windows может сообщить вашей программе, что кнопка была нажата только тогда, когда основной поток программы находится в режиме ожидания.Ваш основной поток всегда должен быть бездействующим, готовым приступить к действиям, когда необходимо выполнить некоторую часть работы.Как рисовать форму или обрабатывать нажатие клавиш.Или делать что-то, когда пользователь нажимает кнопку Отмена.
Это означает, что что-то еще нужно сделать тяжелую работу.Тема.Безусловно, лучший способ начать работу в беспокойном мире многопоточности - это класс BackgroundWorker.У него есть метод CancelAsync (), явно разработанный для того, чтобы делать то, что вы хотите.Обязательно ознакомьтесь с примером кода, приведенным в статье библиотеки MSDN для этого метода.