это потребует некоторой работы.
Самым простым способом на данный момент может быть Rx-Framework (Reactiveextensions).
Взгляните на этот сайт
Если вы не хотите идти по этому пути (нужно некоторое обучение), то вам нужно предоставить какой-то механизм, чтобы прекратить асинхронную работу. Запросы. Это можно сделать с помощью System.Threading.CancellationTokenSource или с помощью System.Threading.ManualResetEvent. Оба могут быть использованы для пометки отмены для работающей задачи / потока, но первое может быть более понятным.
Большинство асинхронно. Насколько мне известно, запрос может быть вызван с помощью CancellationToken (просто используйте .Token-Property источника). Если нет, вы можете использовать свой собственный поток и проверить с помощью ThrowIfCancellationRequested .
Или вы можете проверить свой EndAsync-обработчик, должен ли запрос быть отменен (например, не обработан), ...