it-roy-ru.com

Можно ли использовать задачу <bool> в условиях if?

В Windows Phone 8 у меня есть метод public async Task<bool> authentication(). Тип возвращаемого значения функции - bool, но когда я попытался использовать возвращаемое значение в условии ошибки if, говорится, что невозможно преобразовать Task<bool> в 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

Тип возврата вашей функции - Task<bool>, а не bool. Чтобы получить результат, вы должны использовать ключевое слово await:

bool result = await authentication();

Вы можете прочитать «Что происходит в асинхронном методе» этой статьи статья MSDN , чтобы лучше понять особенности языка async / await.

35
Sergey Kolodiy

Вам необходимо await задача:

bool result = await authentication();

Или вы можете использовать свой любимый альтернативный метод ожидания на Task.

1
Mike Caron