C# 如何制作';等待&x27;对于返回异步函数时的多变量
我有一个C# 如何制作';等待&x27;对于返回异步函数时的多变量,c#,asynchronous,xamarin,async-await,task-parallel-library,C#,Asynchronous,Xamarin,Async Await,Task Parallel Library,我有一个async功能: public async Task<List<Data>> GetDataAsync() { //get data return new List<Data>; //but then filled with real data } 这样,当函数完成获取数据时,listView将被弹出 现在,我想将相同的列表保存到一个变量中,但不需要再次调用sc.GetSensorDataAsync() 我试过这个: List<
async
功能:
public async Task<List<Data>> GetDataAsync()
{
//get data
return new List<Data>; //but then filled with real data
}
这样,当函数完成获取数据时,listView将被弹出
现在,我想将相同的列表
保存到一个变量中,但不需要再次调用sc.GetSensorDataAsync()
我试过这个:
List<Data> data = await sc.GetSensorsAsync();
listView.ItemsSource = data;
List data=wait sc.GetSensorsAsync();
listView.ItemsSource=数据;
但是由于函数是异步的,它将执行listView.ItemsSource=data当数据
变量仍然为空
时
如何解决此问题,以使listView.ItemsSource
和data
都包含返回值
但由于函数是异步的,它将执行
listView.ItemsSource=数据;当数据变量仍然为空时
不,异步等待不是这样工作的。异步方法仅在异步方法完成后执行延续(在wait
之后的行)。这意味着,可以保证GetSensorsAsync
将在下一行将列表分配给ListView.ItemSource
之前完成
如果您正在接收一个null
值,那么这只是因为您的方法正在返回null
但由于函数是异步的,它将执行
listView.ItemsSource=数据;当数据变量仍然为空时
不,异步等待不是这样工作的。异步方法仅在异步方法完成后执行延续(在wait
之后的行)。这意味着,可以保证GetSensorsAsync
将在下一行将列表分配给ListView.ItemSource
之前完成
如果您正在接收一个null
值,那么这仅仅是因为您的方法返回null
,而是因为函数是异步的,它将执行listView.ItemsSource=data;当数据变量仍然为空时
在分配数据之前放置wait怎么可能?方法可能返回null?但由于函数是异步的,它将执行listView.ItemsSource=data;当数据变量仍然为空时
在分配数据之前放置wait怎么可能?可能方法正在返回null?
List<Data> data = await sc.GetSensorsAsync();
listView.ItemsSource = data;