none
WINRT Asynchrone Methodenaufrufe RRS feed

  • Frage

  • Guten Tag liebe Gemeinde,

    ich habe große Probleme beim Verständnis der asynchronen Methodenaufrufe.

    Beispiel: Ich erstelle in Klasse A ein Objekt der Klasse Client.

    Client dbClient;
    dbclient = new Client("localhost",5000);


    Im Konstruktor der Klasse Client rufe ich die Methode Connect auf

    public Client(string IP, int Port)
    {
    Connect(IP,Port);
    }

    Die Methode Connect ruft einige Asynctasks auf, die für die Verbindung mit einem Server zuständig sind.

    public async void Connect(string IP, int Port)
    {
    bool connected = false;
    
    connected = await ConnectGlobal(IP,Port);
    
    if(connected == true)
    {
    int Status = await OpenSession();
    }
    
    }

    Nun ist es aber so, dass nach der ersten await Operation alles abgebrochen wird und das Objekt Client erstellt ist.

    Ich komme also gar  nicht zur zweiten await Operation, was dazu führt, dass das Objekt nicht vollständig ist.

    Ich hab schon sehr vieles Versucht, aber bekomme es einfach nicht hin.

    Wie kann ich dafür sorgen, dass alle Operationen ausgeführt werden, bevor das Objekt erstellt wird?

    Donnerstag, 24. September 2015 10:36

Antworten

Alle Antworten

  • Hallo,

    await braucht eine async Methode und ein Konstruktor kann nicht als async deklariert werden.

    Ich denke, dass die Implementierung der Verbindungsaufbau in einer separate Methode realisiert werden sollte. Dann kannst Du, wenn die Verbindung fehlgeschlagen hat, die Verbindungsaufsbau mit der neuen Parameter noch Mal starten.    

    Grüße


    • Bearbeitet Iso7 Montag, 28. September 2015 07:59
    Donnerstag, 24. September 2015 11:15
  • Hallo,

    ich habe bereits die Methode Connect mit async deklariert

    Donnerstag, 24. September 2015 11:50
  • Hallo,

    gibt es einen Grund, dass Du diese Methode im Konstruktor aufrufen muss?

    Das wird auch funktionieren:

    Client dbClient = new Client();
    await dbClient.Connect("localhost",5000);

    Grüße 



    Donnerstag, 24. September 2015 12:19