Xamarin Android-只有创建视图层次结构的原始线程才能接触其视图
当按下login按钮时,它抛出一个提到的错误,尽管按钮中已经使用了async来运行任务,并且代码是正确的Xamarin Android-只有创建视图层次结构的原始线程才能接触其视图,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,当按下login按钮时,它抛出一个提到的错误,尽管按钮中已经使用了async来运行任务,并且代码是正确的 token = await Task.Run(() => { return core.SignIn(username.Text, password.Text); }).ConfigureAwait(false); 您正在尝试与UI的一个元素交互,该元素是由主调度器从任务中创建的 token = await Task.Run(() => { return core.S
token = await Task.Run(() => { return core.SignIn(username.Text, password.Text); }).ConfigureAwait(false);
您正在尝试与UI的一个元素交互,该元素是由主调度器从任务中创建的
token = await Task.Run(() =>
{
return core.SignIn(username.Text, password.Text);
}).ConfigureAwait(false);
需要类似于:
token = await Task.Run(() =>
{
Activity.RunOnUiThread(()=>{
return core.SignIn(username.Text, password.Text);
});
}).ConfigureAwait(false);
编辑:
基于您从EditText控件获取用户名和密码的假设进行了轻微调整:
token = await Task.Run(() =>
{
string usernm = string.Empty;
string pass = string.Empty;
Activity.RunOnUiThread(()=>{
usernm = username.Text;
pass = password.Text;
});
return core.SignIn(usernm, pass);
}).ConfigureAwait(false);
函数中的某些内容正在从主线程以外的线程进行UI更改。这在Android中是不允许的。解决方案是在主线程上进行这些更改。转换为void returning委托的匿名函数无法在您提到的代码上返回值(return)。这是您的代码,我所做的只是将主操作包装到主dispatcher委托中。你真的试过吗?