类变量未在异步方法中更新



我有一个简单的异步方法,从外部API获取对象,并将其添加到类级别的列表中。问题是,当调用在其自己的方法中被隔离时,对象不会被添加到我的列表中。但是,如果我将调用放在Form1_Load方法中,那么列表将很好地填充。

有人能解释一下为什么会发生这种情况吗?

public partial class Form1: Form
{
private ApiClient client;
private List<Object> list;
public Form1()
{
InitializeComponent();
client = new ApiClient();
list = new List<Object>();
}
private void Form1_Load(object sender, EventArgs e)
{
GetObject();
//Adding the call here populates the list successfully
//list.Add(await client.GetResourceAsync<Object>(1));
}
private async void GetObject()
{
list.Add(await client.GetResourceAsync<Object>(1));
}
}

它是异步的。它最终会更新它如果你想在做某事之前确保它已更新,请await调用。

private async void Form1_Load(object sender, EventArgs e)
{
await GetObject();  //Add await here
}
private async Task GetObject() //Change the return type to Task so you can await it
{
list.Add(await client.GetResourceAsync<Object>(1));
}

最新更新