Wie kann ich einen asynchronen WCF-Anruf abbrechen?

Ich habe einige Zeit versucht, herauszufinden, wie die WCF-Anrufannullierung basierend auf dem neuen .NET 4.5 CancellationToken-Mechanismus implementiert werden kann. Alle Beispiele, die ich gefunden habe, basieren nicht auf WCF und überschreiten nicht die Servicegrenze.

Mein Service:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class MyService : IMyService
{   
    public void LongOperation()
    {
        // do stuff that takes ages...
        // please cancel me!
    }
}
Mein Client (Desktop-App):

Mit einem automatisch generierten Proxy:

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

Wie kann ich diese Aufgabe abbrechen? Bitte geben Sie ein konkretes Beispiel für WCF unter .NET 4.5 + a

BEARBEITEN

Die folgenden Antworten scheinen darauf hinzudeuten, dass dies aus technischen Gründen nicht möglich ist. Also stell dir vor, ich mache meinen ServiceContextMode=Session, dann setzen Sie eine statische Variable (in einem separaten Serviceabruf) mit dem NamencancellationPending=true, mein ursprünglicher Aufruf wird zu diesem Zeitpunkt noch ausgeführt und überprüft diese Variable regelmäßig. Kann ich trotzdem nicht stornieren? Wäre es immer noch unmöglich? Wenn ja warum

Antworten auf die Frage(6)

Ihre Antwort auf die Frage