我有一个简单的异步方法,它从外部 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));
}
}
最佳答案
它是异步的。它最终会更新。如果您想在执行某些操作之前确保它已更新,请等待
调用。
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));
}
关于c# - 类变量未在异步方法中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73226887/