¿Cómo cancelar una llamada asincrónica de WCF?

He estado tratando de descubrir cómo implementar la cancelación de llamadas WCF en función del nuevo mecanismo .NET 4.5 CancellationToken. Todas las muestras que encontré no están basadas en WCF y no cruzan el límite del servicio.

Mi servicio:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class MyService : IMyService
{   
    public void LongOperation()
    {
        // do stuff that takes ages...
        // please cancel me!
    }
}
Mi cliente (aplicación de escritorio):

Usando un proxy generado automáticamente:

private async void DoLongRunningTaskAsync()
{
    var asyncTask = _myService.LongOperationAsync();
    await asyncTask;
}

¿Cómo cancelo esta tarea? Proporcione un ejemplo concreto aplicable a WCF en .NET 4.5+

EDITAR:

Las respuestas a continuación parecen indicar que es imposible por razones técnicas. Entonces, imagina, hago mi servicioContextMode=Session, luego establezca una variable estática (en una llamada de servicio separada) llamadacancellationPending=true, mi llamada original todavía se está ejecutando en esta etapa y verifica periódicamente esa variable. ¿Seguiría sin poder cancelar? ¿Sería aún imposible? Si es así, ¿por qué?

Respuestas a la pregunta(3)

Su respuesta a la pregunta