web-dev-qa-db-ja.com

if条件でTask <bool>を使用できますか?

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;
}
18
MohamedAbbas

関数の戻り値の型はTask<bool>bool自体ではありません。結果を取得するには、awaitキーワードを使用する必要があります。

bool result = await authentication();

このセクションの「非同期メソッドで何が起こるか」セクションを読むことができます MSDN記事async / await言語機能。

36
Sergey Kolodiy

タスクをawaitする必要があります:

bool result = await authentication();

または、Taskで待機するお気に入りの代替方法を使用できます。

1
Mike Caron