Можно ли использовать Task <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;
}
Ответы
Ответ 1
Возвращаемый тип вашей функции - Task<bool>
, а не bool
. Чтобы получить результат, вы должны использовать ключевое слово await
:
bool result = await authentication();
В разделе статьи MSDN вы можете прочитать "Что происходит в методе асинхронного анализа", чтобы получить больше информации о языковой функции async / await
.
Ответ 2
Вам нужно await
задачу:
bool result = await authentication();
Или вы можете использовать ваш любимый альтернативный метод ожидания на Task
.