在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;
}
答案 0 :(得分:36)
您的函数的返回类型是Task<bool>
,而不是bool
本身。要获得结果,您应该使用await
关键字:
bool result = await authentication();
您可以阅读本MSDN article的“异步方法中发生的事情”部分,以便更好地了解async / await
语言功能。
答案 1 :(得分:1)
您需要await
任务:
bool result = await authentication();
或者,您可以使用自己喜欢的替代方法等待Task
。