Como cancelar uma chamada assíncrona?

Como cancelar uma chamada assíncrona? O .NET APM não parece suportar esta operação.

Eu tenho o seguinte loop no meu código que gera vários segmentos no ThreadPool. Quando clico em um botão na interface do usuário, gostaria que esses threads (ou chamadas assíncronas) terminassem.

foreach (var sku in skus)
{
    loadSku.BeginInvoke(...
}

Existe alguma solução elegante além de criar um "sinalizador de cancelamento" global e ter os métodos assíncronos para procurá-lo?

questionAnswers(3)

yourAnswerToTheQuestion