我在使用Xamarin更新UI时遇到了困难。目标是使UI具有响应性,以便用户知道应用程序正在思考。以下是我的尝试。
尝试1
private void BeginProcess(string fileName)
{
Device.BeginInvokeOnMainThread(() => {
iContent.Text = "UI Successfully updated.";
});
Device.BeginInvokeOnMainThread(() => {
ProccessFolder testMethod = new ProccessFolder.Initialize(fileName);
});
}
尝试第二次
private void UpdateUI () {
iContent.Text = "UI Successfully updated.";
}
private void BeginProcess(string fileName)
{
System.Threading.Thread t = new System.Threading.Thread(UpdateUI);
t.Priority = System.Threading.ThreadPriority.Highest;
t.IsBackground = false;
t.Start();
Device.BeginInvokeOnMainThread(() => {
ProccessFolder testMethod = new ProccessFolder.Initialize(fileName);
});
}
尝试第三次。
private void BeginProcess(string fileName)
{
Device.BeginInvokeOnMainThread(() => {
iContent.Text = "UI Successfully updated.";
});
Task.Delay(5000);
Device.BeginInvokeOnMainThread(() => {
ProccessFolder testMethod = new ProccessFolder.Initialize(fileName);
});
}
不幸的是,这些方法都没有起作用。能够起作用的方法是将ProcessFolder方法放在后台线程中,并在主线程上调用UI更改。然而,ProcessFolder方法完成的时间会变慢。
您有什么建议吗?我如何在执行ProcessFolder时更新UI并仍然在主线程上执行?