我在视图中加载async / await任务时遇到了困难。 任务1必须在任务2开始之前完成。
在任务1中,我进行了一些初始化,并使用从Web服务调用返回的数据填充了一个集合视图(也在等待)。初始化此集合视图时,它必须对用户可见,因此我隐藏了我的加载屏幕。当加载屏幕被隐藏时,任务2可以开始。
目前,任务1的数据已加载,加载屏幕消失,但任务2不会等到收集视图在屏幕上呈现。当加载屏幕消失时,我看到task2的内容,当任务2的内容呈现并可见时,集合视图随内容一起显示。
代码:
public async override void ViewDidLoad()
{
base.ViewDidLoad();
ShowLoadingScreen();
await Task1();
System.Diagnostics.Debug.WriteLine($"-------------- Task1 = DONE");
HideLoadingScreen();
System.Diagnostics.Debug.WriteLine($"-------------- HideLoadingScreen = DONE");
await Task2();
System.Diagnostics.Debug.WriteLine($"-------------- Task2 = DONE");
}
async Task Task1()
{
var data = await GetDataTask();
SetupViewWithData(data);
}
async Task2()
{
var otherData = await GetOtherDataTask();
SetupOtherData(otherData);
}