是否可以在if条件下使用Task <bool>?</bool>

时间:2014-04-24 15:12:13

标签: c# windows-phone-8 task-parallel-library async-await c#-5.0

在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;
}

2 个答案:

答案 0 :(得分:36)

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

bool result = await authentication();

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

答案 1 :(得分:1)

您需要await任务:

bool result = await authentication();

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