Hallo zusammen,
ich benutze aktuell den HttpListener weil GitHub per redirect_uri einen access_token an meine Applikation schicken soll. Der Flow ist folgender:
Meine Applikation startet den Browser des Endbenutzers in dem sich eine GitHub Seite öffnet wo er meiner Applikation Zugriff auf sein GitHub Profil gewähren soll. Tut er das, wird per redirect_uri welche localhost ist der access_token an die Applikation zurückgeleitet. Localhost, weil die Applikation einen HttpListener auf localhost erstellt und auf dieses Callback wartet.
Aktuell tue ich das mit
Das funktionert alles prima so, solange der Benutzer den Zugriff dann auch gewährt.
Würde er das nicht tun, den Tab einfach schließen und die Applikation doch nicht nutzen wollen, würde meine Applikation ewig bei
Daher wollte ich dann, im Form Close Event der Form die den Listener startet, den Listener
Wie kann ich einen await sozusagen canceln? Geht das in diesem Fall? (Wäre toll, weil es aktuell echt simpel gehalten ist).
Edit: Ich sehe gerade, der HttpListener hat einen Timeout Manager, allerdings kommt ein Timeout auch nicht in Frage, das würde schon wieder so rüberkommen als müsste ich den Benutzer zu irgendwas schnell schnell drängen. Es soll einfach manuell abgebrochen werden.
Danke im Voraus
ich benutze aktuell den HttpListener weil GitHub per redirect_uri einen access_token an meine Applikation schicken soll. Der Flow ist folgender:
Meine Applikation startet den Browser des Endbenutzers in dem sich eine GitHub Seite öffnet wo er meiner Applikation Zugriff auf sein GitHub Profil gewähren soll. Tut er das, wird per redirect_uri welche localhost ist der access_token an die Applikation zurückgeleitet. Localhost, weil die Applikation einen HttpListener auf localhost erstellt und auf dieses Callback wartet.
Aktuell tue ich das mit
HttpListener.GetContextAsync()
.Das funktionert alles prima so, solange der Benutzer den Zugriff dann auch gewährt.
Würde er das nicht tun, den Tab einfach schließen und die Applikation doch nicht nutzen wollen, würde meine Applikation ewig bei
GetContextAsync()
hängen, weil ja nie localhost aufgerufen wird.Daher wollte ich dann, im Form Close Event der Form die den Listener startet, den Listener
abort()
'en. Doch das wirft mir dann eine ObjectDisposedException eben genau beim GetContextAsync().Wie kann ich einen await sozusagen canceln? Geht das in diesem Fall? (Wäre toll, weil es aktuell echt simpel gehalten ist).
Edit: Ich sehe gerade, der HttpListener hat einen Timeout Manager, allerdings kommt ein Timeout auch nicht in Frage, das würde schon wieder so rüberkommen als müsste ich den Benutzer zu irgendwas schnell schnell drängen. Es soll einfach manuell abgebrochen werden.
Danke im Voraus