Как отменить асинхронный вызов WCF?

Я пытался некоторое время узнать, как реализовать отмену вызовов WCF на основе нового механизма .NET 4.5 CancellationToken. Все образцы, которые я обнаружил, не основаны на WCF и не пересекают границы обслуживания.

Мой сервис:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class MyService : IMyService
{   
    public void LongOperation()
    {
        // do stuff that takes ages...
        // please cancel me!
    }
}
Мой клиент (настольное приложение):

Использование автоматически сгенерированного прокси:

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

Как мне отменить эту задачу? Пожалуйста, приведите конкретный пример, применимый к WCF на .NET 4.5+

РЕДАКТИРОВАТЬ:

Ответы ниже, кажется, указывают, что это невозможно по техническим причинам. Итак, представьте, я делаю свой сервисContextMode=Sessionзатем установите статическую переменную (в отдельном вызове службы) с именемcancellationPending=trueМой оригинальный вызов все еще выполняется на этом этапе, и он периодически проверяет эту переменную. Я все еще не смогу отменить? было бы все еще невозможно? если так, то почему?

Ответы на вопрос(3)

Ваш ответ на вопрос