如何在Xamarin Android中使用runUnuithRead()

如何在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

我想在将结果放入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());
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线程上运行

我的博客上有一篇文章解释了这种行为