web-dev-qa-db-de.com

Kann Task <bool> in if-Bedingungen verwendet werden?

In Windows Phone 8 habe ich die Methode public async Task<bool> authentication(). Der Rückgabetyp der Funktion ist bool, aber wenn ich versuchte, den zurückgegebenen Wert in einer if-Bedingung zu verwenden, heißt es, dass Task<bool> nicht in bool konvertiert werden kann.

public async Task<bool> authentication()
{
    var pairs = new List<KeyValuePair<string, string>>
    {
        new KeyValuePair<string, string> ("user", _username),
        new KeyValuePair<string, string> ("password", _password)
    };

    var serverData = serverConnection.connect("login.php", pairs);

    RootObject json = JsonConvert.DeserializeObject<RootObject>(await serverData);

    if (json.logined != "false")
    {
        _firsname = json.data.firsname;
        _lastname = json.data.lastname;
        _id = json.data.id;
        _phone = json.data.phone;
        _ProfilePic = json.data.profilePic;
        _thumbnail = json.data.thumbnail;
        _email = json.data.email;
        return true;
    }
    else
        return false;
}
16
MohamedAbbas

Der Rückgabetyp Ihrer Funktion ist Task<bool>, nicht bool selbst. Um das Ergebnis zu erhalten, sollten Sie das await-Schlüsselwort verwenden:

bool result = await authentication();

Sie können "Was in einer Async-Methode passiert" dieses MSDN-Artikels lesen, um mehr über die async / await-Sprachfunktion zu erfahren.

35
Sergey Kolodiy

Sie müssen die Aufgabe await:

bool result = await authentication();

Oder Sie können Ihre bevorzugte alternative Methode verwenden, um auf ein Task zu warten.

1
Mike Caron