异步任务<>函数的结果只是阻止程序运行



所以,我正在尝试从Firebase上的用户表中获取数据,在我返回并尝试将结果设置为标签后,屏幕只是变成全白(如果重要的话,我正在使用适用于Android的xamarin(并且没有任何反应。也许我做错了什么,或者我错过了什么,我对任务的工作方式也有点模糊。我任何人都有任何想法,请自由地给我任何方向或任何其他选择。这是我使用的代码 .谢谢

UserDetailsRetrive.cs

public async Task<UserDetails> getUserInfoDetails()
{
FirebaseClient client = new FirebaseClient("https://xyz.firebaseio.com/");
return (UserDetails)(await client.Child("user").OnceAsync<UserDetails>()).Select(item => new UserDetails
{
first_name = item.Object.first_name,
last_name = item.Object.last_name,
username = item.Object.username,
birthdate = item.Object.birthdate,
newsletter = item.Object.newsletter,
term_condition = item.Object.term_condition
});

简介.cs

public void setUserInfo()
{
UserDetailsRetreive usr = new UserDetailsRetreive();
UserDetails userDetails = usr.getUserInfoDetails().Result;
username.Text = userDetails.username.ToString();

}

用户详细信息.cs

class UserDetails
{
public string first_name { get; set; }
public string last_name { get; set; }
public string username { get; set; }
public string birthdate { get; set; }
public bool newsletter { get; set; }
public bool term_condition { get; set; }

}

>Task.Result会阻止Task直到完成,这就是您遇到UI冻结的原因。要解决此问题,您需要异步调用usr.getUserInfoDetails

public async Task setUserInfo()
{
UserDetailsRetreive usr = new UserDetailsRetreive();
UserDetails userDetails = await usr.getUserInfoDetails();
username.Text = userDetails.username.ToString();
}

最新更新