如果有条件,是否可以使用Task ?

在Windows Phone 8中,我有方法public async Task authentication() 。 该函数的返回类型是bool但是当我尝试在if条件中使用其返回值时,错误表示无法将Task转换为bool

 public async Task authentication() { var pairs = new List<KeyValuePair> { new KeyValuePair ("user", _username), new KeyValuePair ("password", _password) }; var serverData = serverConnection.connect("login.php", pairs); RootObject json = JsonConvert.DeserializeObject(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; } 

函数的返回类型是Task ,而不是bool本身。 要获得结果,您应该使用await关键字:

 bool result = await authentication(); 

您可以阅读本MSDN文章 中的“异步方法中发生的事情”部分,以便更好地了解async / await语言function。

你需要await任务:

 bool result = await authentication(); 

或者,您可以使用自己喜欢的替代方法等待Task