mof*_*tje 1 c# asynchronous task-parallel-library async-await xamarin
我有一个async功能:
public async Task<List<Data>> GetDataAsync()
{
//get data
return new List<Data>; //but then filled with real data
}
Run Code Online (Sandbox Code Playgroud)
而我这样称呼它:
listView.ItemsSource = await sc.GetSensorsAsync();
Run Code Online (Sandbox Code Playgroud)
这样当函数完成获取数据时,将弹出listView.
现在我想将它保存List<Data>到一个变量,但不再调用它sc.GetSensorDataAsync().
我试过这个:
List<Data> data = await sc.GetSensorsAsync();
listView.ItemsSource = data;
Run Code Online (Sandbox Code Playgroud)
但是因为函数是异步的,它将listView.ItemsSource = data;在data变量静止时执行null.
我该如何解决这个问题,这样既listView.ItemsSource和data将包含返回的值?
但由于函数是异步的,它将执行listView.ItemsSource = data; 当数据变量仍为空时.
不,这不是async-await的工作原理.异步方法只会await在异步方法完成后执行continuation(后面的行).这意味着,保证GetSensorsAsync在您下一行分配列表之前完成ListView.ItemSource.
如果您收到一个null值,那只是因为您的方法正在返回null.