web-dev-qa-db-fra.com

Est-il possible d'utiliser la tâche <bool> dans des conditions si?

Dans Windows Phone 8, j'ai la méthode public async Task<bool> authentication(). Le type de retour de la fonction est bool mais lorsque j'ai essayé d'utiliser sa valeur renvoyée dans une erreur de condition if, il ne peut pas convertir Task<bool> en bool.

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

Le type de retour de votre fonction est Task<bool>, pas bool lui-même. Pour obtenir le résultat, vous devez utiliser le mot clé await:

bool result = await authentication();

Vous pouvez lire la section "Ce qui se passe dans une méthode asynchrone" de cet article Article MSDN pour en savoir plus sur la fonctionnalité de langue async / await.

35
Sergey Kolodiy

Vous devez await la tâche:

bool result = await authentication();

Ou bien, vous pouvez utiliser votre autre méthode d’attente préférée sur une Task.

1
Mike Caron