如何在Xamarin Android中使用runUnuithRead()
我想在将结果放入ostatueSerid对象后运行此语句如何在Xamarin Android中使用runUnuithRead(),xamarin,xamarin-studio,Xamarin,Xamarin Studio,我想在将结果放入ostatueSerid对象后运行此语句 details.Text=ostatueserid.name+“\n”+ostatueserid.population) bStateuserID.Click+=异步委托 { 详情。Text=“”; Guid x=新Guid(“33F8A8D5-0DF2-47A0-9C79-002351A95F88”); state-ostatueserid=(state)等待obj.GetStateByUserId(x.ToString()); det
details.Text=ostatueserid.name+“\n”+ostatueserid.population)代码>
bStateuserID.Click+=异步委托
{
详情。Text=“”;
Guid x=新Guid(“33F8A8D5-0DF2-47A0-9C79-002351A95F88”);
state-ostatueserid=(state)等待obj.GetStateByUserId(x.ToString());
details.Text=ostatueserid.name+“\n”+ostatueserid.population);
};
GetStateByUserId()
方法返回类状态的对象
它异步运行。完成操作后,我想将名称和填充分配给TextView详细信息
在这种情况下,我如何使用RunOnUIThread()
?我不确定你怎么会错过它,因为你有正确的函数名。无论如何,您可以使用lambda表达式:
Activity.RunOnUiThread(() => {
details.Text = OStateUserID.name + "\n" + OStateUserID.population;
});
或者你可以为它创建一个方法
Activity.RunOnUiThread(Action);
private void Action()
{
details.Text = OStateUserID.name + "\n" + OStateUserID.population;
}
在后一种情况下,如果不是这样的话,就必须将变量存储在私有字段中。在第一种情况下,如果变量与RunOnUiThread调用在同一范围内,它将起作用。您不需要这样做
在您发布的代码中:
bStateuserID.Click += async delegate
{
details.Text=" ";
Guid x = new Guid("33F8A8D5-0DF2-47A0-9C79-002351A95F88");
state OStateUserID =(state) await obj.GetStateByUserId(x.ToString());
details.Text = OStateUserID.name + "\n" + OStateUserID.population);
};
线路
details.Text = OStateUserID.name + "\n" + OStateUserID.population);
已在UI线程上运行
我的博客上有一篇文章解释了这种行为