¿Cómo cancelar una llamada asíncrona?

¿Cómo cancelar una llamada asíncrona? El .NET APM no parece soportar esta operación.

Tengo el siguiente bucle en mi código que genera múltiples hilos en ThreadPool. Cuando hago clic en un botón en mi interfaz de usuario, me gustaría que estos hilos (o llamadas asíncronas) terminen.

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

¿Hay alguna solución elegante que no sea crear un "indicador de cancelación" global y tener los métodos asíncronos para buscarlo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta