如何使更改立即出现在用户界面中?
Posted
技术标签:
【中文标题】如何使更改立即出现在用户界面中?【英文标题】:how to make changes appear instantly in the user interface? 【发布时间】:2020-06-30 02:39:57 【问题描述】:对不起我的英语不好。我是 xamarin android 的新手,尝试在用户界面中进行更改时遇到问题。 例如,上次我尝试在单击按钮时更改按钮的背景。但这直到 click 方法结束时才会发生。
private void MainActivity_Click(object sender, EventArgs e)
((Button)(sender)).SetBackgroundResource(Resource.Drawable.background);
//other code to run
我尝试在 RunOnUiThread 和 BeginInvokeOnMainThread 中执行此操作,但也没有成功。 调试时,我发现它实际上立即进行了更改,但它没有出现在应用程序上 直到方法完成。还有一个事件,当按钮状态被按下=true,并且按钮即使在释放后仍然保持突出显示,它就像这样卡住直到方法 MainActivity_Click 结束。 再次为我糟糕的英语感到抱歉。解决方案?
【问题讨论】:
单独的代码不会导致 UI 更改并尝试在非 UI 线程/任务上运行它们。这是响应式 UI 的唯一方法 我对xamarin了解不多,但是android UI只有在主线程重绘时才会改变。只有当线程没有被阻塞时才会发生这种情况。 您需要更加关注这个问题。太笼统了。尝试按照教程进行操作,并在获得后提供一个最低限度的工作示例,并且错误仍然存在。 【参考方案1】:您的“其他要运行的代码”似乎阻塞了线程,您可以尝试使用异步任务来处理这些耗时的操作。
试试下面:
private void MainActivity_Click(object sender, EventArgs e)
((Button)(sender)).SetBackgroundResource(Resource.Drawable.background);
DoAsyncTask();
public async void DoAsyncTask()
await Task.Run(() =>
//other code to run
);
你可以看看Asynchronous programming
【讨论】:
以上是关于如何使更改立即出现在用户界面中?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.Net Core - 登录后如何等待用户身份立即可用?