【发布时间】:2017-12-01 06:40:37
【问题描述】:
我在private async Task 的签名方法中包含以下代码。我的问题是ObservableCollection<Goods> goods = new ObservableCollection<Goods>(); 在下面的代码Device.BeginInvokeOnMainThread 完成之前被执行。在进入下一行之前,如何确保所有代码都已执行并正确获取值,即ObservableCollection<Goods> goods = new ObservableCollection<Goods>();
请注意,我在 Device... 之前使用了 await Task.Run(),但没有产生任何结果。
请帮忙。
Device.BeginInvokeOnMainThread(() =>
{
Location loc = new Location();
GpsData = locService.GetLocation();
a = GpsData.Latitude;
b = GpsData.Longitude;
});
ObservableCollection<Goods> goods = new ObservableCollection<Goods>();
【问题讨论】:
-
1. 你为什么要在主线程上获取地理位置?它不是 UI 操作,由平台/系统提供,您不需要它在代码的主线程上运行。 2.你需要
await的唯一代码行是locService.GetLocation();,如果这个``GetLocation`方法不是异步的,你甚至不需要让你的代码异步。